The Analog Compendium
The Analog Compendium
The Analog Compendium
~ COMPENDIUM
'-'
~~~~~~--~--~--~--~~~~~~--~~~
v The best ATARI® Home Computer- Programs from the first ten issues of A.N.A.LQ. C . Computing Magazine.
Introduction
Lee Pappas and Mike DesChenes of Worcester, Massachusetts bought their fi rst Atari home co m~
puters in November of 1979. Their first year as Atari owners was spent developing their program~
ming skills, blowing away Zylons, and tearing out their hair because of the lack of support for their
new machines. Where was the information that they (and thousands o f other Atari owners) so
despera tely needed? From the seeds of this frustration, Atari users groups began sprouting up all
over the country. New Atari owners started pooling their knowledge and linking their collective
consciousness via bulletin board systems. Nevertheless. there was no dedicated publication for
their systems, no single source of information that could link Atari owners together. Lee and Mike
decided to do something about it.
In November of 1980, they started an Ata ri ~on l y publication called A .N .A.L.O.G.400/ 800
Magazine . The fi rst issue was only 40 pages long, and had a modest print run of 4000 copies. Gra ti~
fy ingly, it sold out. Almost three years and 15 issues later, A.N.A .L.O.C Computing has grown to
over 160 pages, wi th a world~wide distribution of over 80,000 copies - and no end in sight.
v
With the small er print runs of the earlier issues, we had virtually no returns. Su pplies of back
issues sent out from ou r editorial o ffi ces were q uick ly exhausted. Reprints were done of issues 2, 3
o
and 4 . These sold out, too. Compoundi ng the problem was the fact that the newcomers [ 0
A.N.A.L.O.G. wanted any and all issues previous to the first o ne they purchased. The later the
issue, the more back issues they needed. The solutio n? This book.
Jon A. Bell V
Managing Ed ito r V
A.N.A.L.O.C. Computing
c
v
, VOL. 1 THE A.N.A. L. O.G. CO MPENDI UM PAG E 7
v
v
C:CHECK
16 K Casse tte
b y Istva n M o h os a nd To m Hudson
When typing programs into your computer from Sa mple C:C HEC K o utput:
the A.N. A . L. O.G. Com pe ndium , there is always
a chance of making a mistake. C:CHECK will help
you find such errors very easily. Type in the accom~
panying program and SAVE it. Follow the instruc·
tions be low to check C:CHECK as you wou ld any
other p rogram.
C HEC King yo ur ty ping. Each line of the program being checked ha s
1. Type in the program listing from the Com . its own checksum va lue. If any characte rs in the
pc ndium . Visually check it for obvious errors line are incorrect, the checksum value will be
(missing lines, etc ). different from the corresponding value in the
2. LIST the program to be checked to Co mpend ium . The checksum data is set up so that
cassette. Use the command: there are 15 checksum val ues in each line with the
LIST "C," 16th value containing the total of the checksums.
3. LOAD C:CHECK and RUN it. The line number of the checksum line tells which
4 . C:CHECK will ask you if you want the line numbe r is first in the checksum group. In the
output to go to the sc reen or printer. T ype S for example above, the first line checked in the fi rst
screen o r P for printer and press RETURN. checksum line is 10, and its checksum isJ4 . The first
5. C:CHECK will ask (or an issue number. line chec ked in the second checksum line is 160, and
For the Compe ndium , type 99 and press RE- its checksum is 82. The first line checked in the third
TURN. lf you read A . N.A.L.O.G. Compu(~ checksum line is 310, and its checksum is 65.
in g Magaz in e, you can useC:CHECK to check Let's assume the C HECKSUM DATA above was
the programs in each issue. Just type the issue listed in the C om pendium , and you typed in the
number and press RETURN . program and checked it with C:CHECK.
6. Position the tape to the beginning of the The fi rst thing to do would be to look at the total
program to be checked and press PLAY on the of the values in the first line. Th is value shou ld be
program recorder. Press R ETURN. 2957. as shown in the Compendium C HECKSUM
7. C:CHECK will begin reading the program DATA. However, in the results in the C:CHECK
from tape and generate a checksum table. This outpu t, the total is 3 108. Th is means that there is an
dMa should match the "C HECKSUM DATA" error in the 15 checksum values in this line. Com-
v printed after the program listing you are paring the Co mpe ndium checksums to the
checking. The following example shows how to C:CI-IECK output, we find that the seventh check-
check for errors. su m is 244 in the C:CHECK data, and should be93.
This means that there is an error in the seventh line
Sample Compendium CHEC KSU M DATA, of the program. Note the error and continue
c hecking. The rest of the line is correct, so we go o n
to the second line.
Now we check the toral of the second line of
checksum dara. The toral of2302 in our C:CHECK
v
PAGE 8 THE A.N .A.l. O. G. COMPENDIUM VOL. 1 v
v
da ta matches the {Otal in {he Compendium , so we 338 1 U2;CHKSUH; ..... ; :TOTlll:T01I1L+CHKSU V
M:G010 239
ca n go on to {he third checksu m line. 3,(8 CLOSE ttl:IF lINECOUN1::;Z THEN 370 J
The third chec ksum line is d ifferent fro m the 350 ? tt2iTOTAl
368 CLOSE U2:ENO v
others in that it o nly checks fo ur lines. This is 370 ? .. ~.. :? "Your 1:!IIped-in progra" wa
because it is at the end o f the program , and the p ro- S no1: proper1!11LISTed to tape."
380 1 : ? "PleaSE> LIST your progra .. to
gram d id no t ha ve an even multiple of 15 li nes. The 1:ape. thenRUN ";CHRSe3'('j"CHECk";CHR$(
line is checked the sa me as the others. As you can see, 3.(';" again,":CLOSE U2:ClR :ENO v
the total o f the line sho uld be 547, b ut is o nl y 200 in v
the CCHECK d ata . Looking at the CCHECK •
output, you will notice that there is o ne less check- CHECKSUM DATA
sum value ( the 356 in the Compendium checksum (See pgs. 7~1O) v
data ). This means that the fi rst line in the program
after line 3 10 is missing . The last chec ksum in this 198 00 TO 1'8,75',11.135.1'1,5'.(,1'8,88 u
li ne is also incorrect. It is a 3 4 and sho uld be 25. This 6 , 763,,(67,'31,198.,(65,572,187.62'7
2S8 0010 76.(,'22,11,168.375,783,38",25 u
means that the third line after line 310 in the p ro- '.53',8'8,875,136.732,361.711,(
gram is incorrect .
To summarize, there were 3 erro rs in the program
we checked. Two erro rs were ca used by mistakes in •
the lines, and a third appeared because a who le line
was missing.
~ .. _Q nce you have no ted all erro rs, type NEW and
pres~· -RETttR N. This erases the C:CHECK
prOgram. Nf:'x.t, bring the p rogram being checked
into memo r y by positio ning the tape and ty ping:
ENTER "C,"
If the p rogra m had erro rs. correct the lines in
erro r. If t here were no erro rs, the p rogram is correct
a' id read y to run . 0
v
180 ~EM ~ DEBUGGING AID u
BV ISTVAN MOHOS
IJ9 REM VERSION 2 MODS AND CAS SETTE
128 ~EM VER S ION BV TOM HUDSON
138 GRAPHTC,) o: ? :? "T"'i§ run will LIS
T data s1a1PMen1s 10 t ... P scrppn or
print('r . "
1'8 ? :? "Thi s DOTA is cr('.:I1:f'd by f'ual
uating each r. ... aracler of a user prn
graM. LISTed 1:0 tape , ": ?
J.58 DIM OUT$(1l,J$U281 .C A$(I)
168 ? "OUTPUl TO ~~EEN OR I!lRUTER";: I
NPUT OUTS : IF OUT$\ ) " 5 " OND i'iU1S {) "P" 1
HEN 168
178 IF OU1S ::; " S" THEN OPEN U2,8.0,"E:":
GOTD 209
180 CLOSE U2:? "~REAOY PRINTER AND PRE v
SS t:lii'H:l:r 'i : JNPUT CR$
1'0 TRAP 188 : 0PEN tt2. 8 . 0,"P : "
280 ? :? "ENTEA I S SUE NUH8EP" ;: TRAP 1.8
O: INPIJT I S SUE v
219 1 :? "RE"OV lOPE "NO PRESS f :lii'II;r: ~'
; : OPEN ttl . ',O."C:" : ? : '>
228 Z::; 8 : LINECOUNT:Z:PLIN::; Z: M=2 v
239 TROP 3,(0: INPUT ttl , IS: lUECOUNT=LIN
ECOUN1+1 : lINUH::; UOlCI$Cl 5)) v
2.(8 NLCk::;NlCk+ l: IF NlCK S 1 IINO NlCK<16
THEN 2'8 v
258 IF lINECDUN1:1 THEN 1.8~
2 68 1 U2 ; TOTa L :NLCK ::; J V
'279 IF OUT$::;" S " THEN PI.TN ::; PLIN+l : TF Pl
IM::;18 THEN ? "PRESS 1:14.11:1:1 TO CONTINUE
"i : INPUT CR$ : PLIN ::;O V
288 TOlal ::; Z:? U2 ;lINU" ; " DOTA "i
2'8 CHKSUH=Z : If ISSUE>' THEN M= 2
388 FOR 1::;1 TO lENCI!) : PAODUC1=K*OSCCI
$(I , I') : CHKSUH::; CHKSUH+PROOU C T:~ ::; W+l : IF
le ::; " THEN M::;l
318 N[leT J:CHkSUH=CHkSUH+M*155:M ::; M+l:I
F M::;.( THEN M::;l
329 CHkSUM::;CHKSUH- 1989*INT(CHKSUM/ 108A
)
VOl. 1 THE A.N.A.L.O .G. COMPEND IUM PAGE 9
D:CHECK2
16K Disk
by Istvan Mohos and Tom Hudson
When t yping p rograms into your computer from Sample "D:BUG" CHECKSUM DATA:
the A .N. A.L.O.G . Com pendium , there is always
a chance of making a mistake. D:CHECK2 will help
you find such errors ver y easily. Type in the accom~
panying program and SAVE it. Follow the instruc~
tions below to check D:CHECK2 as you wou ld any
other program.
CHECKing you r typing. Each line of the program being c hecked has its
1. Type in the program listing from the Com· own checksum va lue. If any characters in the line are
pendium . Visually c heck it for obvious errors incorrect, the checksu m value will be different from
(missing lines , etc.). the corresponding value in the Compendium. The
2. LIST the program to be checked to disk. checksum data is set up so that there are 15 check·
v sum values in each line with the 16th value conta in·
Use the comma nd:
LIST "D:progname" ing the total of the checksums.
3. LOAD D,CHECK2 "nd RUN it. The line number of the checksu m line tells which
4. O:CHECK will ask for a fi lename. Re· line number is fi rst in the checksum group. In the
spond: example above. the first line checked in the first
D:progname checksum line is 10, and its checksum is34. The first
and p ress RETURN . line checked in the secon d checksum line is l60. and
S. D:CHECK2 will ask for an issue number. its checksum is 82. The first line checked in the third
For the Compendium , type 99 and press RE~ checksum line is 310, and its checksum is 65.
TURN. If you read A . N.A.L.O.G. Comput· Let's assume the C HECKSUM DATA above was
ing Magazine , you ca n use D:CHECKZ to listed in the Compendium , and you typed in the
check the progra ms in each issue. Just type the program and checked it with D:CHECK2.
issue number and press RETURN. The first thing to do would be to look at the total
6. D:CHECK2 will execute. The screen wi ll of the values in the fi rst line. This value should be
go black in order to speed up the p rogram. 2957, as shown in the Compendi um C HECKSUM
7. When D:CHECK2 finishes, it will display DATA. Howeve r, in the results in the BUG file, the
final instructions. At this time you should type total is 3108. This means that there is an error in the
NEW and press RETURN. 15 checksum values in this line . Compa ring [hI;!
8. When D:CHECKZ executed, it created a Compe ndium checksums to the BUG checksums,
BAS IC file on disk called BUG. ENTER it into we find that the seventh checksum is 244 in the BUG
your computer with the command: data. and shou ld be 93. This means that there is an
ENTER "D,BUG" error in the seventh line of the p rogram. Note the
This file should match the "CHECKSUM error and continue check ing. The rest of the line is
DATA" pri nted after the program listing you are correct, so we go on to the second line.
check ing. The following example shows how to Now we chec k the total of the second line of
check fo r errors. checksum data. The total of 2302 in our BUG file
matches the total in the Compend ium , so wecan go
on to the third checksum line.
Sample Compe ndium CHECKSUM DATA:
The third checksum li ne is diffetent from the
others in that it only checks four lines. This is
because it is at the end of the p rogram, and the pro-
gram did not have an even multiple of lS lines. The
line is checked the same as the others. As you can see,
PAGE 10 THE A,N,A. l. O.G. COM PENDIUM VO l. 1
the total of the li ne shou ld be 547, but is only 200 in 358 COUNT=15:TOTAL=Z:IF l INECOUNT ( 15 T
HEN COUMT =lINECQUNT
the BUG fi le. Looking at the BUG file , you will 368 PAINT UJ;lINE;" OATa " ;
notice tha t there is one less checksum value (the 356 379 FDA I=j TO COUNT:OaTUH=ce15*ITEM+I
in the Compendium c hecksum data). Th is means 1 :PAINT tUiOATUH ;", "; : TOTAl=TOTAl+OATU
M:NEKI I
v
that the first line in the program after line 310 is 388 PAtNT Ul;TOTQL v
3~8 IIEH=ITE"+l:LINECOUNT= l INECOUNT - t~
m iss ing. The last checksu m in this line is also i nco r~ :IF lINECOUNT(l THEN .20
reet. It is a 34 and should be 2S. This means that the "'88 LINE:ReITEMl V
U9 COlO J59
third line after line 310 in the p rogram is incorrect. "'29 CLOSE U1 :POKe 55',PIK V
T o summari ze, there were 3 erro rs in the program .38 '1 "~TO Chl!'Ck GImI data against pri
we checked. Two errors were caused by mistakes in nted
en type:"
data stateMents, type New. Th V
the li nes, and a th ird appeared because a whole line "8 '1 "ENTER"; CHA$ U41; "0: 8UGI:14111:1:1 ,
Type lIST after the V
was missing. READ V prOMpt."
O nce you have no ted all errors, type NEW and .58 '1 :? "The line nUMber of pach d~ta V
press RETU RN. This erases the D: CHECK2 5tateMentcoincides ~ith the first lin
e Of the" U
p rogram. Next, b r ing the p rogra m being c hecked 468 '1 "use r prograM Which the data sta
teMenl evaluate s, "
into memory by typing: .78 '1 "NUMbers within eaCh data s tateN
ENTER "D:progname" ent represenl consecutive l i np s of
th!?' u s er prograM . "
If the program had errors, cor rect the lines in 488 ? "The l ast nUMber i s thp total ,"
error. If there were no errors, the progra m is correct .'9 '1 :'1 "Che ck the ~ nUMber of eac V
h s tate - Ml!'nt ~9ain~he printed vel"
and ready to run. 0 s ion ; " v
'1 "onl'\1 in case of a d:i s crepanc!,l c
each nuMber in the dala s tate~
of the lines co ntaini
19 REM ~ OE8Ur.~IMr. 010 ENTER "; CHR$ e3.,; " D :
8V t5TUON MOH05
29 f:fEM UEf:f SI ON 2 MODe;. BV TnM HUDSON the c orrertjnn s. ":END
3:9 r.ROPHICS 9: '1 :'1 "Th; s ... un wi ll tI':iT
~ata s tatpMent s with thp naMe: ~ ,PIK: ?' "1{[J":'1 "Vour t\lped -
~as not proper]~lI S Tl!'d to d
, to thp di s " . "
.8 ? :'1 "Thl!' em DaTa i .. o·p .. tpoi b!,l eov
aluating eaCh ch ..... acter of a user prog '1 :? "Please LIST your prograM to
...
raM, llSTpd to oii ..... " : ? disk, th£lnRUN ";CHASC3.);"D:CHECK";CHR
58 DIM FIS CIS) $e341;" again,":ClA :£ ND
60 CL OS E tU : '1 "ENTER FILENAMt:"; : INPUT
7 8 P IK = PEEIC e55') : Z=9: AEM IC,hJ.jfhil."l
89 '1 :'1 "EN TEA ISSUE NUMBEA"; : H~AP 8~:
•
INPUT I5SUE CHECKSU M DATA
'9 TRap 68:0PEIII Ul , .,O,FIS (See pgs. 7- 10)
1 00 0111 X GOTO J80 ,2 89 u
11Q '1 "1{" : '1 "DISABLING SC REEN .,. STaNO 18 DaTA .4,815,76 1,52.,686,38',886 , 8SA
8V . . . ":FOR 1=1 TO 808 : NEXT l:POICE 55 ' . ,86,1 2 1,'21,5'3 ,5'1, 78. ' 74 ,411 v
Z: REM debug before poking 168 04TO 482 ,125,3 8' ,6'6, 567 . 1,7,'.2,5
120 LINECOUNT=Z:OIM 1 $(126)
118 TRaP J58:IMPUT Ul;I$:lINECOUNT=lIN 61 238 8' 711 216 '43,541 2",79"
31' Data $1,,$1J,$.1,.21 ,2 ~4 , 435, 2 88, 5
v
ECOUNT-+ .1
J (9 GOTO 130 8.,553, •• 1,111,4" , 803,322,515, 7"3
.69 D4T4 2.6,68.,406,232,123,788,.80, 1
v
1St) CLOSE Ul:0=tNTClINECOIlMT / lS) : OIM C
(LINECOUNn, A eeD , 5S (5) : If (LIMECOUNT=l 1.,598,.1.5 v
OR 1$="") THEN 5J:fJ
169 IF oSCeJ$e1,11) ( 4a OR ASCeISeJ,l))
>57 THEN 530
• V
119 1C =I :GOTO '9 V
188 AANGE=Z : lINE= Z :FOR I=.t TO 5 :S SCI,1
) =" ":Ne1<T I
1'8 cOUln=z V
289 INPUT Ul ; I$:T=1 :C OUNT =COUNT+l
218 IF I$(f,n O " " THEN S$ CT,n =I$CT, V
T) : T=T+1:(;OTO 210
229 LINE=uoleS$1
238 ReRoNGE) =l INE:AaNGe=RONGE+J
249 TRAP 270: XNPUT U1;1$
2 50 COUMT=COUNTt1:lf COUN~=15 THEN 1'8
2 69 GO TO 2.0
119 CLOSE Ul:X=2:G OTO '0 u
28 8 FOR 1=1 TO lINECOUNT:CHECKSUM=Z
2~ 9 GET Ul , NUH8ER:PROOUCT : 1<*NUM8ER:CHE
CKSUM::CHfCK'SUHtPAODUCT:1<=1<+l:IF X=. TH
eN 1C:1
399 IF NUMBER:155 THEN 328
319 GOTO 2' 9
319 CHECK'SUH:CHECKSUH-1880*INT(CHECKSU
H/ I080) :C (I) =C HECK5UH:IF ISSUE), THEN
K= 2
338 NeKT I
3"'9 CL OSE U1 :0 PEN Ul, 8,O,"O:611r;":LI NE =
R (7.:) : ITEM=7.
~
V
• UNLEASH THE POWER
~
v
v
by Ed Stewar t
'-'
Would you like to get as much as a 30% increase in would not have been halted and, therefore , would
speed from your ATARI 6502 CPU? Would you have finished its program instructions sooner. It is
also like to get this benefit without any additional only logical to conclude that the more this DMA ac~
capital expensd If your answer is no, you probably tivity occurs o n behalf of the ANTIC c hip, the mo re
don't like apple pie, either ... but if your answer is our 6502 will be slowed down.
yes, read on, and I will tell you how to accomplish The ANTICchipre-displays the entire TV display
such a feat with onesimpie BASIC POKEin the right 60 times each second. During this period. many
place. computer cycles are stolen from the 6502. During
Firs t, a little background information about one each o f these 60 times, the ANTIC chip also "i nter ~
of the many things going on inside your ATARI rupts" the 6502 and ca uses it to perform such tasks
computer. The particular thing that I want you to as updating various software timers and reading
know about is how display information reaches your game controllers (joysticks and paddles). When the
TV screen. There is a hardware chip ca lled ANTIC 6502 finishes what it must do in response to the
that has most of the responsibility for seeing that the ANTIC "i nterrupt," it may continue with what it
display gets to your TV screen. ANTIC does this by was doing previous to being sidetracked by ANTIC.
v operating independently from the main 6502 CPU You should be getting the picture by now that, al-
in your computer. ANTIC is, in fact, a primitive though ANTIC is indispensable, it causes a slow-
C PU in its own right. It executes a program which is down in the 6502 CPU. But how much l
located in RAM, just as the 6502 executes a program I wrote a simple BASIC program fo r my ATARI
in RAM or ROM. We can therefore call the ATARla 800 in an attempt to answer thi s question. A
multiprocessing computer. since more than one FOR/ NEXT loop was executed 100,000 times with
v CPU may be active at any time. no intervening statements as follows:
v A peculiar and somewhat unfortunate thing hap~ 28 fOR I=1 10 188888:NEXT I
pens when a multiprocessing system such as the The first thing to meas ure was how long this loop
ATARI is actively executing instructions - both executes with no ANTIC DMA active. A POKE
c rus desire access to memory simultaneously. The 559.0 turned DMA off, and the TV screen went
two CPUs cannot both access memory at the same black. A POKE 559,34 turned DMA back on, and
time, so one must wait until the other completes its the original display was restored. The FOR/ NEXT
access request. This memory access conflict is loop was executed in graphics modes 0-8 with DMA
common to all computers containing more than one active, and the executive times we re observed as
C PU - from micros to macros - and is generally shown in Ta ble 1. The execution times with DMA
not something to be concerned about. increased from as little as 10% fo r graphics 3 to as
The ANTIC chip fetches its data from memory much as 4 7% for graphics 8.
using a technique called "Direct Memory Access" or It is easy to see that - if you do a lot of number
DMA. Whenever this memory fetch is occurring, crunching and you don't need the TV screen, soft-
the 6502 is temporari ly haired. DMA is said to be ware timers or game controllers - then turn off the
"steal ing" a portion of the computer's available ANTIC DMA for a while, and you'll get your answer
.J time, called a cycle. There are 1,789,790 cycles of back sooner. It is also apparent from the chart below
computer time available per second. IfDMA had not that your programs will execute faster if you are
V " stolen" that cycle of computer time, the 6502 using graphics modes 3, 4 , or 5.
PAGE 14 THE A.N .A.L. O.G . COM PENOIUM VOL. 1
C H ECKSUM DATA
(See pgs. 7-\0)
v
II DATA 112:,2SJLI74L"IL2'.L2:'J,'~1,61
7 L'2:J,·11,747,7.1,7.7,1 •• ,.7.,14.2
1.1 DATA 4:11,711,114'
VOL 1 TH E A.N. A.LO .G . COMPENDIUM PAGE 15
CONSOLE BUTTON
SUBROUTINE
16 K Cassette o r Di sk
b y Je rry White
.
THEW ? "~":? : ? , "LOA~II' MEIU": RUJI "
co urse, you could access it (ro m your own program D:M:IU" : TRAP .. I •••
with a GOTO 30000. 3'121 IF SEL =13 THEW GRAPHICS .:? :? "
IASIC ": ? "IS" ; : POKE 752,1:1R6P ...... : E
This ro utine provides the user with th ree options.
It will allow you to RERU N THIS PROGRAM (the 31131 TR.P ...... : RUJI
program currently in RAM ), RETURN TO BASIC 311'1 GOSUB 31171
3'15' CHOICE=BUTTOW:BUTTOJl=PEEI(5127"
(which is a fancy way to say END), o r RUN A :IF IUTTOW() 7 THEW 3.15.
MENU PROGRAM from diskette. Na turall y, you JI161 GOSUe 38178 : RE1URI
38178 FOR ME =. TO 8:POIE 5327'.HE : IEXT
could change these opti ons to whatever your own ME:RETURJI
program requires. Th e START bunon is used to
execute the option that is curre ntly displayed, using •
in verse video. Pressing the O PTION or SELECT
buttons will cha nge the previo usly highlighted op- C H ECKSU M DATA
tion back to normal video and highlight the next op- (See pgs. 7- 10)
tion. When the desired option is highlighted, the
START button is used to say ''~O IT." • ~ATA 87".882, 472, 6".678 , ." 2, 127 , 1'7
. 561,185.6Z3 . Z8S.21 S L.. 13 . ' 3 5 , 781 '
Since this is a routine you will modify and include 31131 DATA 7"6 .1 "1 .2 ~7.5 2 6,717.2367
in many of your own programs, it shou ld be LISTed
onto cassette ( LIST "C:") or disk (LIST "0: •
BUlTON. LST," 30000, 30170). Who" you
want to include it as part of your own p rogram
currently in RAM , ENTER "C" : from cassette or
ENTER "Do SUlTON. LST" fcom disk. 0
PAGE 16 THE A.N.A.L.O .G. COMPEN DIUM VO L. 1
b y Do n ald B. Wilcox
It is often frustrating to be fo rced to restart a your program will crash. This can be p revented b y
p rogram because an inad ve rtent erro r caused the using Listing 2 .
program to crash. ATAR I BAS IC provides a special listing 3 - If you try to input data fro m
word - TRAP - that often can be used to prevent a a d isk file beyond the e nd ~o f~ fi l e , yo u will get
program fro m ending befo re inte nded . Man y erro rs an erro r message 136, and your program will te rm i ~
are s ubject to automatic correction o r compensatio n nate. You may no t alwa ys k no w beforehand where
thro ugh a little extra effo rt o n the part of the pro- the fil e data ends, so an auto matic e n d ~ of~ fil e t rap
grammer. can be programmed easil y to p revent t he error. Li s t~
If you are not yet fami liar with the TRAP state- ing 3 solves this pro ble m .
ment , the followi ng examp les sho w ho w to use it to listing 4 - Yo u forgo t to turn o n your printer
detect INPUT erro rs. These occur whe n the user of a o r interface unit and get erro r message 11 138.
program types invalid values into a numeric vari - If you attem pt to use the Continue comma nd
able. after you turn o n t he correct unit , your program will
18 UPUT )( continue beginning at the line number that fo llows
29 PRIn X the line that ca used t he erro r. Often this ca n crea te
38 GOIO 18
erro neous results (no t always d etected), beca use the
In the abo ve listing , typing a no n - numeric re- instructio ns o n the line that caused the erro r may no t
sponse fO the INPUT stateme nt in line 10 (such as have been exec uted correctl y befo re the erro r.
accidentall y p ressing return with no number e n ~ Li sting 5 - Yo u are read ing in data wi th a
tered) will result in an " E RRO R ~8 AT LINE 10" R EAD state ment and you do no t want to use an
message. By adding a TRA P statement , this p roblem e n d~o f~ d a ta dum my va lue as a fl ag, n o r do you want
ca n be avoided co mp letely. to count the entries to determine when all the data
18 TRAP 18 :IMPUT K has been read. Listing 5 de mo nstrates a simp le
28 PRINl K method to p revent erro r #6 (OUt O( Data) (ro m
31 'OTO 18
p rematurely termin ating your p rogram .
In the slightl y modified exam ple above, if an inp ut Fina lly, (o r t hose of you who are relati vely new to
erro r occurs, the TR A P statement will catch the ATA RI BASIC , there are several loca tions (ad~
erro r and go bac k to li ne 10 to t ry the IN PUT again . dresses ) that you may PEEK to find o ut which erro r
After perusal o f these fi ve exa mp les, you sho uld occu rred and which line caused the error. Loca tio n
be able to understa nd ho w to make your progra ms 195 contains the erro r number. Locatio ns 186 and
less vu lne rab le to errors that p rema turely end your 187 contain the line number whe re {he erro r
p rogram. occurred, low byte. high byte, respecti vel y. To d i s~
List ing I - If you mistake nly create a new play this info rmatio n on your screen , usc the fol~
file using a file name t hat already exists, you will lowing statements:
destroy the al ready existing file. No erro r message
will wa rn you of the impendi ng d isaster. Li stin g
I will p revent thi s. 18 REM DISPLAY ERROR "U~fA
28 REM AND LIM E NUMBER OF ERROR
list ing 2 - If you tr y to O PEN a n o n ~ 1 8 PAINT PEEKC HS); " AT LI NE " ; PEEiCU8
6)+PE EK( 1 87 )* 25 6
ex istent fil e, you will get an error message 170 a nd
'-' VO l. 1 THE A.N.A. L. O.G. COMP ENDIUM PAGE 17
• •
Listing 2.
Listing 4.
1 •• PRIIT """:CLA :AEM CLEAR SCAEEI A.
o VARIAILES
III DIM ATRAP$(6).IAME$CS).fILE$CI) 1 •• PRI.T """:CLR :REN CLEAR SCREEI ...
121 REM SET UP DISk SUFfIX FOR FILE IA o UARIAILES
ME. lOCI IF THE fILECDEVICE) IUNIER . III REM CATCH DEVICE TIMEOUT ERROR U 1
11=. IS THE IIPUT NODE
131 FILE$="D:" : :IOCI=2:11=.
.8
1.' RE" MAITE EAAOA If TRAP IS SPRUIG.
IT :IS GOOD PRACTICE TO CLOSE fILES T
121 IEM YOU FORGOT TO TUII OM A. IIPUT
OR OUTPUT DEUICE
138 DIM ATRAP$(6)
o 'REVEIT ERROR 1112' If YOU LOOP lACk 1 •• SET=1.8:If ATRAP$="CAU'H'" THEI P.
lSI REM TO A PREVIOUS PART OF YOUR PRO I.T "TURI 01 110 DEUICE"
GRAM THAT OPE.S A fILE. 151 TRAP SET:ATRAP$="CAU'HT"
168 SET=l":CLOSE aIOCD 168 LPAIIT "PAOGAA" RAM SUCCESSfULLY"
171 If ATRAP$="SPRUI'" THE. ? "ERAOA 1 17. REN RUI THIS PRO'RAM WITH PAI.TER
7•• fILE "i,.ILE$i"' IOI-EXISTAIT"' : FOR 0 TURIED 01 AID Off
=1 TO 1118:IEX1 D:GOTO 118 188 IEM CHAIGE LI.E 168 TO USE DIS.~ I
lal REM KEEPS MESSAGE O. SCREE. TEMPOR ITEAfACE . OR SOME OTHET 1/0 DEVICE
ARIlY BEfORE RETURII., TO BE~IIIII' OF
PRO'RAM
1" TAAP SET:PAII' "'TYPE II fILE .AttE"
: PRIIT "DO lOT I.ClUDE '0:' PREfIX": II •
PUT IANE$
288 fILE$C3J=.AMES:AE" COICATEIATES fI Listing 5.
LE .AttE O.TO DEVICE PREfIX ' 0 :'
211 ATAAP$="SPRUI'"
22. RE" If THE 'OPEI' STATEttEIT MORIS.
ME HAUE A VALID fILE lAME ALREADY STO 118 PAIIl """:CLR :REM CLEAR SCREEI AI
RED O. DISK READY FOR I.PUT D UARIABLES
238 OPE. aIOCD.I •••• fILE$ III RE" RE ..' DATA ... , TRAP OUT-OF-DATA
2'" PRIIT "fILE ";fILE$;" OPE.ED SUCCE ERROR 116
SSfULLY" 121 SET=I.I:'RAP SET:RE" DELETE THIS L
25. CLOSE aIOCI liE .ID ERROA 116 MILL OCCUR
138 READ .:PAIIT I:'OTO 138
• 1.8 PRIIT "nIISHED READII' DATA"
15. DATA 2 •••• 156~83.12
Listing 3 . •
1" PRI.T II.II:CLA
D VARIABLES
:REN CLEAA SCREEI A.
111 REM CATCH EID-Of-FILE EAIOR
121 DIN ATIAP$(6).A$C12.J.IAME$C81.FIL
ESUI)
138 fILE$="D:":IOCB=2:I.=.:'IU=8
1.1 REN '0:' IS fILE lAME PREFIX. 11=
• IS IIPUT RUDE. '.U=8 IS OUTPUT NODE
• IOCB IS DEUICECFILE) .UMlER
158 REM fIRST WE ~ST CREATE A fILE AI
o 'UT SOME OAT.. II IT BEFORE TRVII' TO
READ THE DATA.
v
PAGE 18 THE A.N.A.L.O.G. CO MPENDIUM VOL . 1
v
BASSNOTES IN BASIC v
by Jerr y White
v
Those of you who have written music using 2" 'RAPHICS 8:POKE 752,1:'05UB 11':?
ATARI BASIC may have noticed that eve n the II THE THEME fRO" BARKEY MILLEA"
18. ? :? "BASSMOTES USI.' SOUMD DIS TOR
lowest note available in distortion level 10 is not TIOK 12":'05U8 318:RETURK
really a low bass note. 318 fOR CTRlR=2 TO 36:? "-';: NEHT CTIIL
R:RETUAK
The sec ret to getting a deep, rich bass note is to use 128 REM •••••••••••••••••••••••••••••
distortion level 12. The BASIC program called Bass~ 318 REM
3.. REM
** D=DI5TORTIOK V=UOLUME
GOSUB 58 fOR WHOLE KOTE ***
n ote will d isplay t he notes and pitch numbers for 158 REM
368 REM
**&OSU8 78 fOR QUARTER KOTE
GOSD8 88 fOR EIGHTH MOTE *
two octaves of low bass notes.
It will also play the deep bass introduction to the
178 REM * G05DB 788 TO DRAM A LIME
388 REM •••••••••••••••••••••••••••••
*
theme from Barney Miller. While doing this, the
sound comma nds used will be displayed on your •
screen. 0
C HECKSUM DATA
(See pgs. 7~lO)
18 REM BASSKoTE TUTORIAL BY JERRY WHIT
•28?
38 G05UB 2'9:605U8 1'8:60TO 188
48 SOUND 8,.,.,8:READ PITCH:D =12:U=14:
5ETCOlDR 2,PITCH,8 : 50UMO a.PITCH,D,U
58 POSITION 18.28:?" 50UMO 8,";PITCH
;··.··;O;··.··;V;·· ":AETUAK
68 FOR HOLD=l TO 288:MEXT HOLD:50UKO 8 •
••• 8.8 : PITCH=8:0=.:V=8 : 'OSUB S.:AETURK
7. FOR HOLD=l TO S8:MEHT HOLD:AETUAK
08 FOR HOLO=l TO 2S:MEXT HOLD:50UMD ' •
•••• 8:AETURK
,. DATA 182 L '8,OS.02 L 7S,72,67.67.6',S7
.68.67,7S,6"Sl.6'.7~."
1 •• fOR TIME=l TO 2:'OSUa ":'05UB 68 :
GO SUB 68
118 'osua ":'05UB 7.:G05UB 4.:G05UB 7
•128 '05UB •• :'05UB 68:'05U8 68
138 GOSUB '.:G05UB 71:G05UB .8:G05UB 7
v
AUDCTL DEMO
- 16 K Cassette or D isk
by Je rry White
BV JEARV
• AMD"
OR •
~';::~~; ~~ii~:~~~i~;.i~:~i;~~;~:~.Bl:POIE
MtlJOR 5
2 : POIE X.
VOLU~=2 (J8*J6+2
VARIABLE LISTER
16 K C assette o r Disk
b y Tony Mess ina
Have you ever wrinen a program and then tried to and ending cha racter for the variable is A. If the vari,
go back and document all of the variables that were able name was "TEST," then " T ES" would be
usedr If you're one of the eli te 10% who are orga, stored as normal characters and the last "TOO would
nized, you probably wrOte down all of your variables be stored as an inverse ·'T. TEST$ , a string variable.
II
and their meanings as you wrotc the program. If would be stored as "TEST" (normal) and "$" (in ~
you' re like the other 90% of us, who write a program verse). If a variable ha s dimensions [e.g., DIM A
and then spend several agonizing hours documenting (26)], then the variable is stored as "A" (normal)
it, then help has arrived. and "(" (inverse). Knowing where the Variable
The follow ing utility was wrincn to help me keep Nam e Table starts. we shou ld be able to go in and
track of my variables. It docsn't tell me what I used pick out all the variables in any given program.
them for. but it does tell me what I used. Th is utility How do we know where to stopr The e nd of the
is JUSt the start of another utility I'm working on (a table is denoted by a blank byte following the last
cross reference program). You can run out and spend character of the last va riable name. For the purpose
anywhere from $9.00 to $45.00 for any of a multi, of our utility, however, we want to stop picking off
tude of utilities, but I don't have much money - and variables when we encounter the first variable of the
writing the things myself has taught me more about utility program. Armed with this information, let's
the inner workings of the ATARI than any listing try our first experiment.
could. Let me explain how your ATAR I stores vari,
able names. It will help you to understand how and Li sting I .
why the program works.
5 REM TYPE A CO.TAOL CO~ BETMEE. THE
Be h in d th e sce n es. OUOTE5 IM LIME 71 TO PRODUCE A HEAAT
II? CHR$CI25J : REM .CLEAR SCREE ••
Within the heart of your ATARllurks the Va ri , 21 ? "A5CII","CHAR ..... ADDRES5":REM • HE
able Na m e Table. This table contains all of the ADI.GS •
31 A=18 : TESTl =11:DIM B$CIJ , YESCS . 5J:RE
variables used (and, sometimes. not used) by a pro-- " • SAMPLE VARIABLES •
gram. How do they get therer Good question. When 41 5TART=PEEK(138)+PEEKCJ3J).256:REM
GET DECIMAL 5TART ADDAESS Of UAA .A~
*
you type in < A= 10 > for cxample, the ATARI TABLE •
51 ? " " i PEEKC5TAATJ." "iC"A$CPEEKC STA
BASIC cMtridge takes the "A" and puts it in the first
available slot of the Va riabl e Na m e Table. It also
ATJ J . " "i STAAT : AEM
EA AMD ADDAE5S •
*
PRIMT ASCII. LETT
As you can see, the variables for the program itself of these values, we have an error, and the error
were printed to your screen. This was juSt a sample flag is set. If everythi ng is okay, line 32522
for the non~bclievers our there. The variables p r e~ increments the number of varia.bles VACNT,
sen ted are representative of all types used by the sets the skip nag SK IP to I and returns.
ATA RI: regular, string and d imensioned. Another 32524 appends an asterisk to our variable if
thing you will notice is that the variables foll ow the an error occurred, sets ERRER back to 0 and
o rder in which they were typed. Line 30 is the first returns.
place variables were typed in . If we look at the output 32526 ~32 528 check what is in the strin~
of our program, we see that the variables follow the VAR$. If the actual name VAR$ is there, then
same order as Line 30: A,TEST1,B$,YES and START. the program ends. If not, then the variable name
The add ress of each letter is also printed in the last and its address in RA M is printed. The charac~
column. This will be helpful when we conduct ou r ter count C HARCNT is cleared (set to zero),
other experiments, so type in this p rogram. SKI P is cleared, VAR$ is cleared, and wereturn
I hope this little demo illustrated the points I made to build the next variable name.
prev iously. Here is an explanation of how the utility 32512 p rints the start and end add ress of the
operates. name table. It also prints out the number of
T h e progra m . var iables in the target program.
Listing 2 is the utility program. Program flow is as How to use it.
follows: Type the program in exactly as shown in tht.' Iist~
32500 clears the deck and initializes th e util~ ing. When you've finished, check everyth ing and
iry variables. 32502 clears the screen and out~ then save it using the LIST"D:VARLST" for disk o r
putS a message to the printer. 32504 takes the LIST"C:" for cassette commands. The reason we use
contents of the current address and stores it in LIST rather than CSAV E or SAVE"O:fiIename" is
TEMP. A check is then made to see if TEMP is so that we can merge the utility with your target pro~
an inverse character (i.e., >= 128), or if it is a grams without disturbing anything. Once the p r o~
blank . If onc of the conditions is true, the gram is saved, you can load in any BASIC target
program goes to the subroutine at Line 32514 program. By target program, I don't mean a program
to find out what the cha racter is. If neither con~ that has target in it: [ mean any program you want to
dition is true, we drop through and store the obtain a variable li sting from, utilizing the utility.
va lue from TEM P, and store it in to the appro~ Once the target program is loaded, \.Ise the following
pri ate location in VAR$. We are building ou r co mmands to merge the util ity. If you have a cassette,
va ri able name in VAR$ for ou tput to the prin~ cue up the utility and type ENTER"C:" and hit RE~
ter. A check is made of the error nag ERRER. If TURN. After the beep, press the play button, hit
set, an asterisk is appended to our variable name RETURN again and the program will load. For d isk
in VAR$. If clear, then SK IP is checked. If it is users, type in ENTER "0: VARLST". The program
set ("set" mean ing it is cqual to I), then it's time will then Io.'ld from d isk. Once the utility is Io.'lded.
to p rint our vari able nam e. If clear ("clear" type in (usi ng direct mode) GOTO 32500 and the
meaning it 's equal to zero), we increment the utilitv will do its thinQ.
current address CU RADD, the character cou nt This utility is set lip for output to a p rinter. If you
C HARCNT and then go back for the next line. don't have one, simply replace all LPRI NTs with
32514~32522 are the su bro utine lines used PRINTs. Be p repared to hit CONTRO L 1 to stop the
to determine the type of variable. We get here if screen listing, so you can copy the va ri able names.
the value in TEMP was an inverse character or a Hit CONTROL I again [Q resume output.
blank. If the content of TEMP is an ASCII You are probably wondering why I have the
blank, then the program goes to Line 32512, address p rimed out. If you don't want it printed,
prints Out some information and stops. If REPLACE Line 32528 with the fo llowing:
TEMP con(3ins an inverse "$," then we change 12528 lPRINT UAR$: CHARCNT =8 : SK IP=O:UAR
it to a normal "$" (TEMP~ 128) and GOTO $="":RETURN
32522. If TEMP coma ins an inverse "(," then it This will prevent the address from being pri nted and
is changed to a normal "(." and we GOTO leave you with a clean piece of paper to document
32522. If all of the above fail, then we assume an your p rogram. There is a method to my madness in
ASC II number or letter. It is changed to a pri nting the address.
normal cha racter, and a check is made to see if The m ethod .
the new number fall s between 48 and 90. If you Consider this ... if we know the add ress locations
look in Apl)(.>ndix C of the ATARI manual, you of ou r variable names, it would fo llow that, if we
see that ASCII 48 ~90 contains the numbers, POKE different characters im o the rabie, we could
some other cha racters and the n the leners A~Z. change ou r variable names. This is nor only (rue, bur
If the value in TEMP does not fall between any offers O[her pO[cmial benefits and (if the reader is
PAGE 22 THE A.N.A.L.O. G. COMPEN OIUM VOL. 1
nor careful) problems. Beware!! The following ex~ day no n - inverse letters bctwL-en the quotes. Hit RE- v
pcrimcnts s hould be tried after reading the following TURN and LlST t he program. If you did everyth ing
paragraph. right, " TEST I " will be replaced by " BLAH 1". Of
The interp reter docs not ca re about variable cou rse, we o nly replaced va riable names with those v
names, other than when they aTC initiall y defined. that had the same length . For experimenting, use the
After that, it doesn't care. Why! Well , once you same length name because you can rea ll y make a
define a variable, it is assigned a number from 1 28~ mess out of things. If you are adventuro us, try a n y~ v
255. The fi rst variable is assigned 128, the second thing!! Just remember t hat the variable names must v
variable is assigned 129. etc .... up to 2 55 . In the end in an inverse character.
rokenitcd version of you r p rogram , these variable
E;I(perim c nr #3.
number assignments become importa nt, not the
RUN the p rogram again, then, in direct mode,
names. When you list your program, the interprete r
type the following:
scans the cokenized form of your program in mem - v
o ry, and matches all the numbers with KEYWORDS, fOR Z= FIRSTADDR TO lA STADDA : POKE Z 155 I
: JlEHT Z
such as GOTO, REM , COLOR, etc. When he hits a
Substitute the appropriate add resses on the screen
va riable number - 128, for example - he says,
[0' FIRSTADDR and LASTADDR. When READY
"Oh ... This is a variable; its number is 128, but, to
appears , LIST the program . Surprise! All you see now
me, t hat's variable number I . Let me go into the
is KEYWORDS. Not a va riable in sight! Run the
Va riable Name T able and get the name. Since it's
program - yes, just t ype RU N. Surprise II . It works
num ber I, it is the first name in the table." O nce the
just lik e normal. Except where the variables o nce
name is retrieved, it is put up on the display. All of
were is now filled wi th emp ty s pace. WhahappenedU
this happens in mere m icroseconds, but t hat 's what
The 155 POKEd into the name table is a no n -
you r interpreter does. If we happen to change the
printing character. The interprete r picked up the
names in the table, the interpreter will b lindl y go in
name and even prin ted it o n the screen ... we JUSt
and grab whatevcr is or isn ' t there. He grabs the var i ~
couldn ' t see it. Yo u cou ld do this to that secret pro-
able name based on the nwnoc'T, nOt the name. Re~
gram of you rs and let your friend borrow it. When
member the inverse character at t he end of each va ri ~
he LISTs it to learn 311 of your secrets .. . boy, will he
able name! Joe Interpreter uses this as a signal to tell
get a s ur prise. Try il! I have , and what a ruck us it
him when he has gotten the who le thing. Eno ugh
caused. Be sure to save a copy of the original for
theory, next experi ment.
you rself, or :you may be the o ne who is surprised!
E;I(peri men t #2.
T h e last expe rime nt.
Let's try changing somc names. If you h aven ' t
For our last t rick , trv this. First load the program,
done so, type in the short example p rogram at the
o r, if you didn't save it, type it in again (SA VE it this
begi nning of this article. If you d id type it, then load time). Now RUN it. In direct mode, type the follow -
it. RUN the p rogram and fo llow along with me. O n ing:
the screen you s ho uld see the va riable "A" in in-
verse. Let's change it to "Z". In direct mo de, t ype t he FOR ~ = fIASTADDR TO lA STADDR : POKE A, ASC
C..... ) : JlEMT A
fo llo wing:
POKE ADDRE SS .ASCC"Z") Again use the add resses that are on the screen. Whc n v
READY appea rs, LI ST the p rogram . C heck out al l of
Make s ure the "Z" isan inverse "Z." The address will v
thc garbage!! I' ll let you figu re it o ut fo r yourself.
vary with the amount RAM you have and the con~
(Hint - The imerp rctcr se3 rches for inverse charac- v
figuration, so use the add ress that is on the screen
ters.)
(e.g., the address given for variable "A"). Hit RE-
TURN and, when R EADY appears, LI ST the pro- F in a l n o tes .
gram. The fo rmer statement "A= IO" will magically VARLST will interfe re if your target program has
be replaced by "Z= 10"! the same line numbers as the utility. I s t3 rted at
Let's try o nce more. Let's ch 3nge " TESTI " to 32500 as all o ( m y program line numbers fall W3Y
"BLA H1 ". First re-RUN th e p rogram, then , in below that fi gure. If necessa ry, change the line num- v
di rect mode, type the following: bers higher or lower, but remcm be r to change all of
POKE ADOR ESS ASC C" 8" ):PO ICE AODR ESS+ J ,A
1
the GOSUBs and GOTOs. A lso, if your ta rget has
SC(" l"': PO n ADORE SS+ 2. ASC("a " ' : POKE Q more than 119 va riables in it, VA RLSTwiJl not load.
DDR ESS+J, AS CC" HIt ) I' ve never seen a program with tha t many variables,
("A"),POKE ADDRESS+3. ASC("H") but it is possible. If you have any variable names
Again, we have the starting address of "TEST I".
longer than 30 characters, VARLST will not work. *
Since each letter occupies one byte, then "T' begins Have fun experimenting! 0
3t the address listed in you r output; "E" is located at
t he address+ I, etc. Si nce the I is already there and in
inverse, we don't have to use inve rse letters in o ur
POKE statements above. Use the regu lar o ld every ~ *Dimension VAR$ brgcr in this case.
v
VOL . 1 THE A.N.A. L. O.G. COMPENDIUM PAGE 23
Listing 2.
32588 CLA :01" UAA$(181:TA8lESTAAT=PEf
KCl181+PEEK(1311*Z56:CUAADD=TABLESTART
:CHAACNT=1 : UACNT =8:ERRER=8 : INU=128
32582 SkIP:.:? "1!Ii":LPRIIfT "THE fOlLDWI
.. If UaRIABLES ARE IN THIS PAOGRA",': FOR
~=1 TO S8:NEHT H
32504 TEMP=PEEKCCUAADD):If TEMP)=IIIU 0
A 1EMP=A5C(".. ') THEil (;OSUB 32514
32586 UAA$(CHAACNT,CHAACIIY':CHR$(TEMP)
:IF ERAEA THEil COSUB 32524
32508 If SKIP THEil COSUB 32576
32518 CUAADD=CURADD+l:CHARCIIT=CHAACNT+
1:(;OTO 32584
32512 LPAINT :L PAIIT "TA8lESTART= ";TA
BLE5TART: lPRIIH "TABLE EIIO = "; CUAAOD -
4:LPRIMT "It Of UAAIABLES= ";UtlCNT-l
32513 EMO
32514 If TEMP= ASC ( ..... ) THEil POP : ,DID
32512
32516 If TEMP:ASCClfE;l") 'HEll 1E. . =T£HP-
128: GOlD 32522
32518 If TEMP =ASC("U") THEM TEMP=TEHP -
128: GOTO 32522
32528 TEMP=TEMP - 128:If TEHP(~8 OR TEMP
>'8 THEM ERRER=l
32 522 UACMT= UACMT+l:SKIP=l:RETURM
32524 UAR$ (CHARCMH 1 , CHARCIfH 1) ='1:': EA
AEA=8:RETUAIT
32526 If UlIA$="UAA$" THEM POP : (;OTO 32
512
32528 LPAIIfT UAA$" , II AOOAESS= II . CUAA
OD- CHAACltT+l:CHAACltT=8:SKIP=8 : UAA!="":
AfTUAtli
• C HECKSUM DATA
(See pgs. 7-10)
32598 DATA 256,3'8,2e5,62~,'52.663,823
,557,377,141,15' . 12','84,'32,148,7348
32528 DATA 715,715
•
Circle Demo
18 HC=161:YC=81
28 AD=68:IMC=18:YS=8 . 75
31 GRlIPHICS 8:COLOR 1
48 GOSU8 1888:E.0
1188 RE" --- ------------------
1118 RE" CIACLE DAAWEA AOUTlt11E
1128 AE" ---------- - ----------
1838 RE"
1848 RE" HC: x-coordinat@ of c@nt@r
1858 RE" YC: ~ - coordinat@ of c@nt@r
1868 AE" AD: circle radius
1178 AE" ItIIC: drawing increMent 1-358
1888 AE" YS : y- scaling factor
18'8 RE"
118. DEG :PLOT XC,YC+AD*YS
1118 FOR CIAClE=8 TO lfi8 STEP I.e
1128 XCOOAO=HC+SItII(CIRClE)~D
l1l8 yeOOAD=YC+COS(CIAClE)~D*y5
11~8 DAAWTO HCOORD,YCOORD
1158 If EXT CIRCLE:RETUAtli
CHECKSUM DATA
(See pgs. 7-10)
II DATA 118,'81,32,473,165,2~1,167,278
,188,184,463 , 8,48,284 , 645,4258
1110 DATA ~6','58,~22,868,442 , 315'
v
PAGE 24 THE A,N,A.L.O. G . COMPENDIU M VOL. 1
BUNCRUSH
16K Cassette or Disk
by Tony M essina
In our last episode, we left our hero (Bruno Bit~ would have ra do this for every variable number, and
mangler) tea ring out his hair, looking for his lost it could take some time . We'll worry about the time
ene rgy variable E amidst all the garbage o n the TV later. The first question is: where does the tokenized
screen. Meanwhile, Bruno Jr. screams, "I wanna version of our BASIC p rogram begin? Glad you
play Missile Command!" and Mrs. Bitmangler asked! The start location can be found at address
shouts, "Both of you get in here ... DINNER is get~ 135, 137 (Decimal) o r $88,89 (Hex). This is not
ting COLD!" If o nl y ou r hero had BUNC RUSH, his where the program begins, but rather the pointer (0 u
p roblem would be solved. What's a BUNCRUSH ! where it begins. To obtain the decimal location
It 's the BASIC U nem belli shed No~Cost C ross Ref~ number, we would execute the following BA SIC
erence Utility and Software Helper. If you want to stateme nt. v
get it up and running, type in Listing 2 and skip to TO.E.~PEE.C136J.PEE.Cl~7)*2S6
the " How to use BUNCRUSH" section. Th ose of The variable to ken would be set equal to the sta rt
you who want to learn a little more about the ATARI add ress of our token program. Now what! Well, it's
BASIC token structure and how BUNCRUSH was time to scan the program from start to fini sh for ou r
developed should read on. first variable. Before we do this, I'll d igress into m y
Design consideration s. " Here's how a token ized BASIC lin e is set up" tap
Seve ral major conside rations were involved in dance routine.
designing BUNCRUS H. Th e list I used was as fol - I saw a hand in the back of the room ... "What 's
lows. this 'token ized program' you keep refe rring tot' I'm
1.) Bui ld upon the concepts presented in sorry . .. Ier me explain. When you type in a program
Utility # 1 - Variable Lister (see page 20) line in BASIC and hit RETURN, several things hap-
2.) Allow use with both Cassette and Disk pen. First, the BASIC cartridge takes each item you
systems. typed in and converts it in to tokens for its own use.
3 .) Allow screen or printe r output. Each command (GOTO, TRAP, etc.), ope rator (+.
4.) Output should include the variable name, -, =, etc.) and fun ction (STR$ , SIN, COS, etc.) has a
its associated line reference numbers and be special token assoc iated with it. The interprete r
neat in appearance. sca ns, tokenizes, places the token in the p rogram area
5.) Make the output fast and si mple. and continues till it hits your carr iage return . If v
6.) Provide flexibility for user modifications. everyth ing is correct with respect to sy ntax , the
With these considerations in mind, I sat down and cursor appea rs on the left side of the screen, and you
wrote BUNCRUSH, It's been rewritten t hree or four ca n continue on with the next line. If you make a mis- v
times. Each time it was improved and streamlined. take. the interpreter stops scan ning and prints the
Listing 2 is the final version. line o ut with an error message and an inverse cu rsor
With all the above ground rules set, I' ll dive into to show you where it stopped.
the bac kground material, namely ATA R I token After you correct your mista ke. the interpreter
structu re. goes th rough the line again. This process conti nues
BASIC's background. until you have entered your entire program.
As was expla ined in the last utility article, vari- The tokenizing process is used to save space by
ables are assigned numbers in o ur token program. con verting the ASCII input to tokens. For example,
Names do not matter, un less we want to p rint out a the Restore comma nd would normally take 7 bytes
p rogram listing. It follows that, if we cou ld locate the (one per letter). Through tokenization. it only takes
start of ou r raken p rogram, scan each line fo r a 1 byte contain ing the number 35 Decimal. Tokens
variable II (128-255), save the line num be rs that serve another important pu rpose. At Run -Ti me, the
contain the variables we are looking for and print out BASIC inte rpreter fetches a token. This token is
th is inform(ltion, we would be all set. Of course, we actually an index for a jump table. This jump table
VOL. 1 THE A.N .A.L.O. G . COMPENDIUM PAGE 25
points to the various routines within the system. the line will appear, as well as the BASIC fo rm . Use
When a to ken has been execu ted, BASIC returns, Table I and compare the w ken version with the
fetches the next token and contin ues the process of table. This little util ity helped me a great deal in un-
v execution. de rsta nding how things get tokeni zed.
v W ith that sim ple explanation out of the way, let's Back to BUNCRUSH.
look at the structure of a tokenized line of BA SIC. Well, with that digression out of the wa y, let's
Each line va ries depend ing o n irs length and the look at Listing 2, the actual BUNC RUSH utili ty.
n um ber of multi ple stateme nts in it. Some items You may notice some similarity to the Variable
don't get tokenized . ASCI I strings are an exam ple. In Lister program. I bu ilt BUNCRUS H around it.
v
a stateme nt such as PRINT "This is a test," the Va riable names were shortened and so me unneces-
PRINT state ment will get tokenized. When the in ~ sa ry items removed. There are 2 pa rts to BUN~
terpreter encounters the quotes, it replaces them C RU SH. I used BASIC to handle the string mani ~
with a 15 ~tok en (string follows to ken), sa ves o ne pulation tasks of finding the variable names and
space, then putS each letter of the string in o ne byte formatti ng the names/ line numbers for outpu t. The
until it hits the last quote. The byte after 15 then gets ML routine works hand in hand with BASIC. All the
updated to the number of ASCII characters in the M L routing d oes is search the token program for our
string. Similarl y, numbers are put in BC D represen~ va riable number (we start at num ber 128). When it
ta tion. BCD numbers take up 6 bytes for the number finds it, it return s the line number to BASIC. BASIC
itself. For example, with PEEK 130, the PEEK would then takes the number and putS it in the string
get a token of 70, and the "(" a to ken of 58. Then a VAR$. If VA R$ exceeds the print length of 80, the
14 would be placed next. Fou rteen is the "BCD program prints out th at line. BASIC then jum ps
number follows token." After the 14 would be the 6
byte BCD representation of 130 (65 1 48 0 0).
Don't worry, no need to memorize BCD numbers.
° back in to the ML ro utine, and the search goes on
until all var iables and line references are Output.
Just remember how they appear. Anyway, o ur Program flow.
example of a simple token ized BAS IC line follows. Line 32500 - Clea rs aJl varia bles and se ts
up the program parameters.
BASIC line: Line 32502 - O utputs heading credit. (Go
20 PRINT PEEK (Z) ahead - put your own name in the re if you
Tokenized form (in decimal): want.)
Bytes ( I ) (2) (3) (4) (5) (6) (7) (8) (9)(10) Line 32503 - Skips some lines, prints out
20 0 10 10 32 70 58 128 44 22 col umn headings and reads in the ML routine
Bytes 1 and 2 - Line number LSB MSB FO data.
RMAT Line 32504 - Gets our variable name, one
Byte 3 - Numerical offset to the next line character at a time. Remember from Variable
number in bytes Uster, an inverse character marks the end of a
Byte 4 - Numerical offset to next statement va ri able name. If T P> = 128 then we subtract
number o f bytes. This is used to keep track of 128 and set a flag at 1690 for use late r o n. I call it
whe re the interpreter is when a line has mu l ti ~ the Variable Name Complete Flag. IfTPisnot
pie statements; i.e., 10GOTO 20:GOSU B 200: >= 128 we move on.
PRINT X:GOTO 5 - The rema inder of the Line 32506 - PutS the variable name in
bytes consists of the tokenized fo rm of ou r VAR$. CC is the Character Count.
BAS IC line. Lin e 3 2508 - Checks ou r Va riable Na me
Byte 5 is the token of PRINT. Com plete Flag. Ifitset( = I) we GOSUB32526.
Byte 5 is the PEEK token. If no t , we fall th ro ugh.
Byte 7 is the left parenthesis token ("("). Line 32510 - Updates the cu rrent address
Byte 8 is the variable number assigned to Z. (CA), the character cou nt (CC) and goes back
Byte 9 is the right parenthesis token (")"). to 3250 4 to get the next characte r of the vari~
Byte 10 is the en d of line token. able name.
To hel p you get a feel for these concepts, I've i n ~ Line 325 12 - Skips a few lines and prints
eluded the ATAR I BASIC T OKEN TABLE I. I've out the variable count at the end of the program.
also included a short program that prints out the Line 32513 - Ends the program.
tokenized versio n of line numbers with in a program. Line 325 26 -Is a subro utine; wejump he re
Th is is Listing I. I call it TOKLOOK. Type it in and from Line 32508. First we check if Ollr variable
save it using the LIST command. Now load in one of name is VAR$. If yes, pop the stack and end the
your BASIC programs. When " ready"appca rs, load program. If not , we drop th rough.
the TOKLOOK program, using the ENTER com~ Line 3 2527 - Pads VAR$ with blanks .
mand. When it 's in, type GOT032500. Answer the Variable names ca n be up to 15 cha racters long.
prompt wi th a line number. The tokenized version of If you have variable names longer [ha n 15, just
PAGE 26 THE A. N.A.L.O.G. COMP ENDI UM VOL. 1
change the 15 fO whatever you want. I haven't VAR$ gets pri nted first, then is padded with 15
had any problems yet. Fifteen is a safe. num~ bbnks.
ber. Line 325 40 - The line number get added to
Line 32530 -Jumps to our ML routi ne. VAR$ and a (comma space) is appe nded. Here,
The sou rce listing is incl uded as Listing 3. The v
X is updated to reflect the length of VAR$. We
M L routine sea rches every line of the token then jump back to the ML routine so we can
program, looking for our variable number. It continue on.
returns to BASIC under two conditions. How to u se BUNCRUSH.
Condition 1: It finds o ur variable num~ Type in th e program from Listing 2. Double-
ber in a line. check everyth ing, especiall y the ML DATA, to en~
Condition 2: It encounters Line 32500, su re a good program. Save the program to d isk using
which is the start of the util ity. the LIST "D:BUNCRUSH" command or to cassette
Some simpli fications we re necessary in writing the using the LIST "C:" command. To use BUNCRUSH:
search program. 1.) Load in the program you want to cross
I.) If you fi nd our variable, stop sea rchi ng reference. v
that line and retu rn to BASIC with the line 2.) Load in BUNCRUSH using the ENTER
num be r. There is no need to search any further, "D:BUNC RUSH" co mm and for disk or the
even if the va riable appea rs 10 times in the line. ENTER "C:" comma nd for cassette. v
All we care about is the line number, not how 3.) When READY appears, be sure your
ma ny times the va riable appears the rein . pr inter and intcrface are turned o n .
2.) If we encounter a DATA or REM s tate~ 4.) Type in immediate mode GOTO 32500.
ment, sk ip it. There are no variables in DATA or 5.) BUNCRUS H should now print out the
REM statements. title and the column header VAR LI NE
3.) If we pick up a "BCD Nu mber Follows" NUMBERS to the printer.
token (1 4 ), sk ip past it. Search ing it is not 6.) The C RT display should say READ ING
healthy - we'll get an e rroneouscross~ r efere n ce ML PROG RAM. After 3~5 seconds GOOOO!!
in some instances. should appea r, and the printer shou ld be busy
4.) If we encounter a "String Follows" token dumping out the Variable C ross Reference.
(15). sk ip past the string, as any inverse c hara c~
ters will trigger the "I found o ur va riable" Modifications.
signal. Remember , we look fo r variable The program in Listing 2 is set up for an ATARI
numbers from I 28~255. 825 pri nter with a line output of 80columns. Modi ~
5.) If we hit a "Statement End" token ( 15), fications for o ther prin ters follow:
skip past the next byte. It contains an offset 1. ) PR INT ER - If you have an ATARI 4 0~
number which can cause erro rs. colum n printer, change the > 80 in Line 32538
1won't go into too much detail on the ML routi ne. to > 40.
It's not even very elegant, as a matter of fact. Things 2.) NO PRINTER -If you don't havea pr in ~
can be done to speed it up, but - as you'll see - it's ter. change all LPRINT statements to PRINT in
plenty fast enough!!! Anyway, we return to BASIC. Lines 32502, 32503, 325 12. 32535 and 32538.
Line 32532 - Checks the con location at In additio n, change the 80 in Line 32538 to 39.
1680 dec imal. If set, we are contin uing - GO Everything will now be dumped out to the
process the line number. If not. we are done screen. Use the CNTR L 1 key to STOP/ START
with th is variable, so drop through. the listing.
Line 32534 - Erases the comma at the end 3.) LINE NUMBERS - If you want to
of the last line number. If X <= 16 then no line change the line numbers for BUNCRUSH in
numbers were generated fo r this variable and order to move it up or down, you must beware
therefore the re are no references fo r it. or certain items. All GOTO and GOSUB ref~
Line 3 2535 - Prints out VAR$, zeros out erences must be changed to reflect the new line
the character count, clears out VAR$ and numbers. The most imporUlnl change of all is in
NUM$ and returns to 32510 fO get the next the M L routine itself. The ML routine checks to v
variable flag. see if the current line number is 32500. If you
Line 32536 - Gets the current line number change the starting line number of BUNCRUSH,
(Cl) from locations 1683 and 1684 - that's you must change the check in the ML routine.
where the ML routine put them. DATA Line 32548, item 14 is a 126 which is
Line 32538 - Converts the line number to the MSB of the line number 32500; DATA Line
a string. It checks to see if the length of th is line 32500, item 5 is a 244 which is the LSB of
number, when added to the cur rent length of 32500. Anyway, whatever your new line
VAR$, will be greater than 80. If it would, number. brcak it down inro LSB/ MSB fo rmat
VOL . 1 THE A.N.A.L.O. G. CO MPENDI UM PAGE 27
Listing 1. 1
32508 CLR : D1" VAR$(1]:ST =PEEk(136]+PE 2.5.165.117.113,2.6.16 •••• 1
:? IHPUT LIHE h TO E 161 , 6.218,177.285.141.162 , 6
288.7.113.161,6.281.244.249
177.285,141.157.6,168.4.177
28,288.'.1'2.4.248.1.288.28
DATA 115.6.785 . 15'.6 . 248,5'.781.
....
III'"
....,.,,.,, ~L ll t OtC FOM
THI!:N C"I!:CK
..,.
. . . .S
•• 1.
.'111
•• 21
•• :S.
co,
...."
,.,
co,
"H f"
CKC"T
... a .. ,v
alT PAI!:YIOUII TOK!!:"
THEH A' I TOMI!:
OMlll1 ..... L pOI .. TfA
III IT THE .. ?
VI!:II. "'THI!:" NOT II T MlNII'
"D .. 8I:T IITMIN8 C""
"~I ¥ II AYE II"YE V
••••
.'.1
,~
<CO
'IIAYE , .. C p ... IIT THI! LAIT IITMIHII
CLI: ... M CAMMV .. OM .. DII
• . "'.
'.1'
•• 11
'.61
,'7 ,
•• 71
CKC .. T
SKI'IT
'"
'"
'"
'"
'"
V'"YI!:
COU"'
II''''AT
TOKU"
Ailil IITMINII COU .. T TO OLD
puT C .. T lACK I .. V MfO
AM ~ .10 IH .. XT .AI IC LINI:
I~ NO III!:T THill IIYfE
IF ¥EI U"'IIATE TOKE" ,TM
CHECKSUM DATA
..". '"' CONTIN Co .. TINUI: TO LOOK
""'
,.al
",AOCIT
'" ". "A~t CON "D"·ZEMO
v
(See pgs. 7~lO) '" TOKU," U,DATI!: 'AIilE I POIHTfR
..
• ...1I1C ftlT TO .... IIIC
.'''1 '"'
,., ,
'" DEC V TO IEMO
32 ••• DATA Sa2.7aS.847.663.7~2.8 •• ,6S' '1"
'111
T"'MlltT UpO ... TE TAMGlT .. U".lM
II!:MO OUT CON FoM ...1I 1C
"",5'6,385,8",81,,873,152,188,"46
~2S'a DA A 5.1,'~I,'46,S57,148.8e6,127
'II'
.111
'"
'"
on
FULL "AlllV"ESII O~~
MI:TUA" TO '''' S IC
,211 L666,612,288,126,'88,675,568,8284 112.
1121 I •••••••••••••••••••••••••••••••
~25.~ DA A 6'8 145,'1 876 121,536 822, ''1:S. I. • IU.MOU""'E TOKUp •
7•••• 17.1.7 ••••• '2 ••••••• 15.11 ••••• 5 'Ila
.a., ,. • .................. . •
12516 DATA 7'5,&'1,1488 I.
TH I S IIU.AOU""E U,"D ... TEII THI'; •
• ,1.1 I. P GI ,"TM 01' INl 'OKEN pMOGM ..." '
.,111. , . 'HIE OLD , 'A I II 1.0.. 01011 ... NO •
• ,aaa I . THI:'" THl IVYI! C"T 18 "DDID • •
. , . , I · I .. C ... MMV III 111:' PII . . . III •
Assembly language listing. ,...•••.......................••
la61 , . ALIIO UPO ... TEO
..,.
la1'
• a71 •
•............................... 'alii 10KUP , PII'
..,
••• 3 illEr 1.111 01' POI .. TIA
..
, . NL S~AMCH
MIDt ATMMI •••• ~DM
,aas CLI!:"'M C ... ftMV FOM Ailil
"'3 , . 'II" .V TONV "~SSI"'~. 'I'"
.a"l
COUNT
· po.
MOil CH' TO "~T LINf •
PUT IT I,.CK
•• 2. , • • 11 IIUIIL~V ",Yt Ht.~O'IT, M I '
Z.'"
'.2:1 , • • ZII •• YtMlIlDH '''' I, CAMMV CLE"'M lI!';f out
.n • •...............................
I . ;lUI. a3 •
."'11 ' ''01·1 OOP', CAAM¥ I I!:T . INC 11111
'133
"4,
•............................... ."'1'
."'z, '"
I .. a
,........ IICMAH II"'""
MI:N TO~I:N
•• ,1a
COUNT
··"" I¥TIE C .. , THill .... IIIC LINE
~LAB POM II"'IIC .. III. MOUT
••• 5
• 01 •
.CD I TO~I:N '''' T ... MG!!:T
··" YAMI ... aLl TOKE . . . 1I1AM1 ...
.0 1 "
,,,,a,
'''''1
..
•• 7. aTMl108 VII"'YE ¥ AEIII S TI!M IAY~ AMlA
. 01 " IITM IHII TOKI:II
•• 75 IIT"T
•••• TH( N
Z. .01 a'.'tNrll T I:ND ,.aa
1.1",.. 1,111
··"" • IA.1C LINE HUHIIEM 1.11.
lila OF LINl •
·• "•• •
TN~N TOK!';N
"
••••
TOK'TM
• III
.01
Z7
,.a.1I 'OINII:M 10 11"11 ''''61 INYFLG
'''''''I
INYfAllt "LAlli AM~"
• ,.5 •...............................
••••
.11. ., THla 'A08M"" OOfll A IIf"'ACH
,. TO AIOt aUNC~UIIH. IIAIIIC ."11 •
,,13
.12. ,.
,.
.12:1 ,. 1,1,
TOO 111.0. , 110 TNIII "I. MOUTIHf'
NA il "AIT Tt N fO 11'££11 THIN81 •
.1 33
'14'
.14:1
• 13. IIflllN
',:1,
•• 110.
."'" ,."' .. ..
LOA
C"'"
aNE
,.
CON
CONT IN
SfOM!!: OIJ!!:CT ' " "I:"
OMIIiIN '11'"
1.0"'11 A .1 '" •
CK .ITH CON ~L".
SKI' IN" I" NOT •
CO ....... "'OIl
HU DlC
TOKEN TABLE
OPfAATOIIS
HEI.Dt:C
FUNCTlO".
"UOfe
..
'Ie., 00 D REM 00E 14 (NUM CONST] 30 61 STA'
INIT 1. 11'" .TOK'T" III';T 1..111 01' 'OINTEM
'17,
.175
liT", "1111 STOM!'; "
61:1 "110F 'OI.TEM
DI DATA Of' 15 {STR CONST] :IE 112 CI-lRS
LilA 'TOK'TM., 11'2 31'
"ua:! CO"'TlN
ITA
LDY
"111'.'
,.
IITOMI!: II "'1.10
IITAM' V AT r~MO
03
2 INPUT
3 COLOR
10
It
18
17 (NOT USEO] 01(1
63 USA
I!<I MC
••••
.,., LIIM " •• ' . V el:T LSI OF I. 1"'1: HU"I(M GO l iST 12 18 ., !iii Y"'L
.2 •• ,.,
lIT'" LINNUN SAY!!: IT FOM II"'II C
INCM!';NENf O~I'IIET . , ,
O!I
011
5 ENTER
e lET
13
14
Ii
20 (snIT EN O(
42
43
66 LE N
67 ADR
.U:I LilA .'111.' ,
V al';I " ' , 0" I..I NI'; NUN'I!:A
44 66 ATN
.21'
'2':1
.22.
ITA LINHUN.,
'1''11 • • • • •
D7
011
7 IF
8 FOR " "
18 22 (LIN E ENO] 45
006
68 COS
7(1 P ~ E K
iii 9 NEXT 17 23 GOTO
.225
123. • CN' .17 1!: 1111T·TD".1 0.0. 10 GOTO 18 24 GOSU B 47 71 SI N
.235 .HI'; NOEll oa 19 25 TO 48 12 RNO
..
II' NO THEN IT ... MT " GOTO
124. 1.11'" LIHNU" VEt 110 CK 1.81 .~ 73 fRE
OC 12 GOSUB '''' 28 ST EP
''243 CN' ..... DO IT
.25.
.2:1:1
.2 ••
~ ,.,
.1';11 1I0HE I~ 1:0. 00 .. ( TNI. Y ... M
INC 'TM TO NE~T LOC ... 'ION
00
\It;
13 TII"'P
14 liVE
18
lC
27 THEN
n.
4A
4e
74 EXP
75 lOG
1.0'" ."e." v err .... IIIC LI.E IIVTE c .. r OF 15 CONT 10 211 <_ (NUMEAICS( 4C 76 CLOG
12.:1 IT'" COU NT II ... YI: I T "OM "UTUME CKII
127. LOV •• 10 Ie co ... IE 30 <> .0 77 SOR
lifT NI:. Ol'I'III!: T
1275
IU.
1.11'"
CN'
'''111.', V
I IIT HT
IIET .. IYTE I.OIMI:CTLV
CK "OM A II TNNf /OI " TOKI!"
11 11 ClOSE IF 31 >- OE 78 SG N
..
12 18 ClR ~ ~ , of 19 ABS
1211:1 1.1: '''MIIICK I .. NO. CK 'OM TIIIT TOKE .
50 BO INT
'2'" C'V •• .AII I f lilT IIVTI! ? 13 19 DEG " » >
. 2.:1 11:11 ."'SDI" 'Ell •• IT .... 1 A DIH~ 14 20 DIM n • ~1 81 P... ODLE
'3" ,.,
'"
..
INC 2 II' II"NT 15 21 END ~ 52 112 STICK
.3.:1
'31'
,3"
....1111111
TAMeCK
J .. , CKCNT
C~ T"'A8I:T
IHC I I'OM DIN
II!:I!: IF Nt: "'M~ DO .. t
III IT OUA f ... 1I81ET
lG
17
22 NEW
23 OPEN
"~ " S3
s.o
1!3 PYIlIG
Ilol STAIG
'32' Ifll "IIDCIT II' • • 0 PAOCEIII THill LINI!: 18 24 1.0"'0 ~
v
.32:1
U3.
nn
C .... IIII:H"'AK
lIED I",,~IT
C~ 10",TA
NO CK MI!:N
II' MI:" SKip T"'III LINI:
NOT AI". CK OAT'"
Ig
lA
25 SAVE
28 STAT US
"
:!8 01(1 NOT
134' 11:0 IIKI,tt I ' OAT ... IIKI~ IT "'1.110 18 2 7 NOTE :z& 41 Ofl
.34:1 C N' IICD NOT OAT ... CK .CII NUHIIA
2A 42 ..... 0
.35. .NE IITIICK II' .. OT ICII CK "OR ITM INII
1C 2t f'Ol N'T
U5:1
. :u••
'3 .. :1
.37.
.31:1
IITMCK
..
'"
<CO
,
" IIC 17
J"," CKCH'
IT. IICII pUT O,,'IIET IN ...
CLI!:AM C ... MMV 1'011 ADD
ADD 7 TO IIKlp THE ICII .,
,uT "E " 0"'1110' ."CK IN ¥
~D ~O CK cOU~T
10
110
IF
20
:z& 1.10
30 ON
31 I'(l ~E
32 PRINT
211
~
20
2t:
2F
.,
43 {
3t IIElUAN » <
M" 31 RUN »
~
>
» 31 STOP ~ "
~
" ."
H
." "" " .
5$ ((STRING LEn PAllEN)
"" .a
~
PUT
'l GRAPHICS
•• Pl.OT
"" 58 ((AAR"'V lEFT PAIIEN(
" ((DIM ARRAY LEn P"II£"'I
54 ((FUN LEFT PAIIENI
M
»
.
.. SElOOLOfI
'11 LOCATE
" '''''."
" "r,.o
,-~
S2 <:SAVE
!03 ClOAO
(IMPliED LETI
"" 5$ ERRQA-ISYNTA.IC(
Triangle Demo
5 C=1
II IiRAPHIC~ 23
15 E=INTC1I . . . IDCl))
21 D=IIT(ll8*R.D(l')
25 C=1
31 COLOR C
35 8=3,
.. I 4=7'
'5 fOR 5=1 TO D STEP E
58 fOR X=A TO 8 STEP -2
55 PLOT 81.6-)(
61 DRANTO 8'*X,IIY(A/5)
65 DRANTO ",X
71 DRANTO el-K,IIT(A/S)
75 DIANTO 81 A- x
.,8 If PEEK(764)()Z55 THE. END
85 COLOR C
, . NEXT X
'5 C=C.l
1.. NEXT S
1.5 SfTCOLOR 8,T,2
118 r=TH
115 'OTO 5
C H EC KSUM DATA
(See pgs. 7-10)
5 DATA "3,"',.'8,483.'67,761.238,227
,138,'62,886 L148,38,146,582,7677
88 DATA 871,'85 , 413 , 77,748,588,326 , 662
,4388
PAG E 30 THE A .N.A.L .O. G. CO MPENDIUM VOL. 1
SYS/STAT
16K Casse tte or Disk
b y Ro bert H a rtman
Sys tem Statu s is a BASIC progra m that allows ITIO. 12,17:? "A5232- C ports":AETURN
288 TAQP 32767:POSITIOM 23,1':1 "Co....a
the user to look at a formatted listi ng of all the nds" : PO SITION 2"'.28: ? ''I:::- Menu (s)"
devices accessible to him/ he r. It also ha s the capabil ~ 2" POSITIO. 2"'.21:? '~Run agilin "
ity to display 64 file s o n d rives o ne thro ugh four. Its :P051110N 2"',22:? "[j--E)cIT":POKE 55',34
:S ETCOlOR 2,4.4:POk£ L5CH.255
main p urpose, howeve r, is nOt to be a menu, but to 318 CLOSE U5:0PEM U5.4.1."K:":'ET It5,A
:If A()6' AND A()77 AND A()82 THE. 31.
supply the use r with information rega rding the l18 If A=6' THEM GRAPHICS 8:POIE 65.1 :
accessibility of the fou r RS~232 ports . GOSUB 258: MEW
l28 If A=82 THEN RUN
NOTE: If a dri ve is started up after the program 338 RE" tIE.U CS)
has bee n run , it is necessa ry to re~ run the program in 30&8 POSITIOM 23,H:? " u:POIE 2
81,14:fOA 1=29 TO 22:POSITION 2"',1: 1 ,
order to get a menu o n that particu lar drive. 0 :.EXT I:POSITION 2"'~21:? "Enter Driue"
358 TRAP 288:POSITION 37,21:IMPUT DR
368 If DR(1 OR DR)'" THEM 281
37' If DR=1 AND Dl=1 THE. DRV=I:'OTO '"
2.
388 If DR=2 AND 02=1 lHEN DRV=2:'OTO 4
S1:il1:US 2.
3'1 If DR =3 AND D3=1 THE. DRU=3:'OTO 4
2.
"'.8 If DR='" AND D"'=1 THE. ORU="':'010 4
:GAAPHIC 2.
82 I:PO 0&18 'OTO 288
~ ,i:H§~~': cO.=5h" 428 ? "iii": POSITIOM 2,1:? "Menu for Dr i
off u~ U";DRV:? :? :'OSUB 258 : 8$="0 :*.*":
B$(2,2)=STR$CDRV)
"I" : "'38 OPEM Al,6,8.B$:OPEN 1:12,"'.8,"1:"
"'48 TRQP "'88:INPUT Al . A$:.=N+l
458 ? A$(2.LENCA$)):IF PEEIC'8)=21 THE
.. POlE 82.PEEI(82)+21:POStTION PEflC82
).'
"'6' If N=35 THEM GOTO 528
"'71 '010 "' ...
"'81 ? CHR$(28);" " : ? :1
f lEN(A$)>t5 THE. If A$UI.1U="SE" TH
EN GOTO 588
""8 A$ (LEN CQ$) + U =" FREE SEC TORS"
588 fOR 1=1 TO LE.(A$):ASCI , I) ~ CHR$CAS
CCA$(l.IJ)+128) :NEXT I:? A$
510 POKE LSCH.255 :GE T a2.A:CLOSE a2:RU
•
268 C=Ct2 : RETUR.
278 POSITION 12,16: fOR 1=1 TO ",.? ''fir';
318 DATA 771,88',1"'6,28"'.'21,738.288.2
'7,386,287 . 718,'18,'64.'32,648 , 8'58
468 DATA "'18~72a.6"'.13"'.615.~33 ,7 67.2~
v
'v
VOL. 1 TH E A.N.A.L.O .G . COMP ENDIUM PAG E 31
FASTERCHARACTER DUMPS
16K Cassette o r D isk
by Joseph T. Trem
.
8388 ~1.6IF All BlIX)(S IW<£ llWlED RETIMl TO BASIC
1391
~
MULTIPROCESSINCi
16 K C assette o r Disk
b y Ma rk C h asin
No, this article will notenable you to set up a time~ mediate vertical blank vector is found at hexadeci ~
sharing service on your ATA R I home computer, but mal address $0222 and $0223, and the second vec ~
it will demonstrate how to implement a form of tor, called the deferred vertical blank vector, is found
multiprocessi ng which has been used in a number of at $0224 and $0225. What we are about to do is
recently released programs fo r the ATARI. To un~ change the add ress located at $0224, $0 225 to point
derstand the principles of th is program, you will to our own routine, and then we']] jump back into
need some background on how the video display the routi ne that the ATAR I was originally poin ti ng
operates. to. When this is accomplished, our routine wil l
The beam of electrons generated in the cathode execute 60 times pe r second, and will continue to
ray tube of your TV set is focused and directed at the execute unti l we either turn off the computer or hit
p hosphors on the screen. The beam begins sca n ning SYSTEM RESET. Th is will be rotally independent
the screen at the upper left corner, and p roceeds of anything else we may be doing at t he time, such as
across the screen from left to right. At the right edge, programming, editing, or pla ying a game!
it returns to the left side and drops down one scan The BASIC p rogram shown in Figure I is simply
line, and proceeds to the righ t aga in. This process is an implementation in BASIC of the Assembly l an ~
repeated 262 times until the whole screen has been guage program shown in Figu r e 2 , so I will describe
scanned, and then the beam is turned off and re ~ the operation of the Asse mbly language program in
turned to the upper left corner to repeat the process detail. First, I wi ll list the locations and their uses
again, sixty times a second. within the program.
This seems like a great deal to handle in o n e~ C O U NT I - used to determine how man y
sixtieth of a second, but your ATARI has a mach ine times we have gone th rough the rou tine, to ca l-
cycle time of 560 nanoseconds, so in that time in ~ culate when to start and stop the notes to be
terval, the ATARI can execute approximately played.
30,000 cyc les . The result of this is that when the C OUNT 2 - used to remember which note
beam retu rns to the upper left corner of the screen, the routine is playing.
there is a good deal of time to waste before it must VVBLKD - the location of the deferred
start scanning again. At this point, the ATAR I goes vertical blank vector.
off on its own, performing a number ofhouse k eep~ SETVBV - an ATAR I routine, described
ing funct ions, updating timer~ and the like. Ult i ~ in more detail below.
mately, it retu rns to the business of drawing o n the MU S IC - the location where the list of
screen. nOtes to be played is stored.
The folk s who built you r ATARI designed the R ET U RN - this is where we need to jump
syste m so that it could be modified easily by anyone to recurn to the ATAR I housekeeping routines.
wanting to do so, and the rema inder of th is article SND - the frequency register for SOUND
will discuss such a modification. The computer O.
" kno ws" where to go duri ng the wait described V O L - the distortion and volume register
above because two memory locations contain a hexa ~ fo, SOUND O.
decimal address tell ing it where to go, and every time Li nes 130 and 170 ~ 190 are housekeeping func~
it gets to the upper left corner of the display, it loo ks tions of this ro utine. Line 130 prov ides the PLA
in these memo ry locatio ns and goes to the indicated instruction necessary for accessing the routine from
address, where the housekeeping routines are stored. BASIC, and lines 170 ~ 190 set both COUNTs to O.
This process is called vectoring. There are actually Lines 230~270 repoint the delayed vector to our
two independent routines performed during each routine, as follows. Since the 6502A inside your
interval, and separate vectors exist for each. The im- ATARI is an 8 bit processor, we can o nly handle one
VOL. 1 THE A. N.A.l.O.G. COMPEN DIUM PAGE 35
v byte at a time. It should be obvious that if the com- This is a simple demonstration of the use of verti-
puter tries to access this vector after we have cha nged cal blank inter rupt routines. There are many other
one byte of the address, but before we have changed potential uses for this approach, such as background
the second, the compute r will go on a wild goose music for another program, check ing for keyboard
chase looking for where it should be. To p revent th is, or joystick input du ring a p rogram. or implementa-
those clever folks who wrote the operating system tion of multitasking. [t is perfectly feasible to have
for your computer built in a routine, called SETVBV, two completely separate programs running "simul-
which will change these vectors without the chance taneously," but the programming for this gets fairly
of fouling things up. To use it, we load the Y register complicated. One program would run in real time,
with the new vector low byte, and the X register with and the other during the vertical blank inte rrupt
the new vector high byte, $20 and $06 respectivel y routines. Play around with the ideas presented here,
in this case, since ou r routine is loaded at $0620. We and learn all about simultaneous p rocessing. 0
then load the accumulator with a 7 if we are setting
the deferred vector, or a 6 if the immediate vector,
and then we JSR to the subroutine SETVBV. Presto!
Figure I .
Our vector is changed, and the routine starts oper-
ating.
This routine will playa little familiar background
music whilc you slave away over a hot computer.
Later o n, I'll describe how to change the tunc to your
own selection. The routine starts on line 320. This is
the first time through, so we increase COUNT 1 to
one. If COUNT 1= 12. we'll turn the note o ff, and
when COUNT 1= 15, we'll play the next note, and
reset COUNT 1 to O. Lines 360-370 shut off the
nOte, lines 410-420 reset the count to 0, and lines
430-470 play the next note. The tune consists of
eight notes repea ted over and over, and COUNT 2
keeps track of which nOte is being played. Whe n it
gets up to 8, it's resC[ to 0 (lines 480-530), so the
first note is played right after the eighth. If COUNT
1 is not equal to either 12 or 15, the routine ends and
returns to the normal housekeeping funct ions per-
formed by the ATAR I during the vertical blank
per iod (line 400). Also, after a new note is starred,
the same thing happens (line 540). The table of nOtes
played in the tu ne is located in li ne 590.
The BASIC program in Figure 2 simply converts
the instructions described above in to decimal fo rm,
and POKEs the rou tines into the correct place in • C HEC KSUM DATA
memory. T he rout ine is then set in motio n with the (See pgs. 7-[0)
USR call in li ne 27000, and from that point on, can
be ignored. It will conti nue by itself! 8889 DATA 1JJ.466.426,611,26~S47,~51.8
74,164,587,J65.7J5.JJ5,421,l~7,7018
Changing the tu ne being played is ve ry simple. 23808 DATA 4'3.616.~4S,'11 . 1'7.274.17S
Choose a song in wh ich all the notes are the same ,1521
length, e.g., quarter notes. In line 2 4000, change the
1639 to ( 1632+the number of notes in your tune- I), •
replace the data in lines 25000 and 26000 wi th the
notes fo r you r [line, and change the 8 in line 22000 Figure 2.
to the n u mber of no tes in your tu ne. Remember, the
tune will play over and over, so pick something 18 t= t8688
wh ich sounds good o n repetition. 21 COIMI = SIIC!
The routine presented here can be ended by a 3i 'MIJ(D = $1224
48 COlNT2 = SU C2
power-off, power-on seq uence, o r by a SYST EM se Sf11JIIJ = 'E45C
RESET. A thi rd method, probably mo re usefu l fo r 61 MUSIC ='8668
use in a program, is this: 78 RETURN = $E462
88 !lID = mil
POKE 1562,194:POKE 1544,'S:POkE 1 546 ,2 ~ I,\l = $O21l1
28 : X=USR(1542) : SOUND 0,0,0,0 8111 i
V
PAGE 36 THE A.N. A.L .O.G . CO MPENDIUM VOL . 1 ~
V
"ila; PlA FCR ~IC ACa:SS v
112. j
8131 PlA ~
1141 i
81l!; INITIAliZE ro.MERS TO ZERO ~
8161 .
8171 \1)\ 19 v
8181 STA COIIIII
8191 ST. ro.M2 ~
1211
8211 t{]j RESET DEFERRED <{crill ~
1221 i
8238 LOY "28 v
1241 lDl 1116
8258 lM 187 v
1261 JSI S£T\IIIJ
8278 ITS v
8298 .
8m·; ... IN
1311
INTERRlJ'T RWT IHE v
83!1 1= f1l629 ~
8321 INC COIIIII
8338 LOX ro.Ml v
8341 CP); 112 jTlNE TO STOP NOTE'
8358 IK:C leI jtl) Iv
8361 LOA i8 j'rES, so STOP IT
8371 ST. «<. ~
838. 1(1 CPX .15 ;15168 SE~OS GIJ4E'
8m BCS PlAY jYES PlAY tEXT MJTE
'-'
8411 .!t1P RETUI\l ;H6, END INTERRUPT
8411 PlAY L.M 18
8421 STA COIIIfI ;RESET COIIIII TO ZERO '-'
8438 lOX 0l.NT2 jGET MJTE TO PtAY v
8441 LIlA NUSICC)lOOK IT 1If
8458 STA!N) j~ 1 IT'S FRECOEP«:Y v
1461 LOA IIW
8<71 ST. «<. 'SET PtIlE NOTE VOll/£'6 v
8481 INC i:iiiiIt2 ;SET UP NOO lllTE
8491 LOX ro.M2
8Slt CPl 18 iAll NOTES USED UP?
Graphics 10 GTIA Demo
Iv
8511 sa: IXJ£ .",
8521 LOA H il'~S, START ()JER AGAIN 18 RfM GR~PHICS 11 GTI~ DEMO
8538 ST. ro.M2 28 RE" v
1541 OIJlE J1P RETtMi ;AlL OIJlE 31 liRAPHICS 18
8551 • 41 REM eH".'E DATA TO eHA.'E COLORS ~
8561; TAIl.E OF MUSICAL NOTES 51 fDA CI=I TO 7:RfAD CU:POKE 715+CM,C
8571 ; U:MEKT CM:DATA 6,12,23,42 , 53,62 , 73,84 v
1581 to: '166' 68 C=8:SETCOlOA 4 , C,.
8591 .BYTE 243,243,217,243.284,243.217,243 71 FDA X=8 TO 3'
al FDA Y=8 TO '5
'I XN=I' - M:YN='S - Y : DIST=IMTe~QReMw.XN+
• Y"'YN))
111 COLOR l+a*eDrST/a - rMTeDI~T/a))
v
111 PLOT M,Y
121 PLOT " - M, Y
13. PLOT X.l'l - V
148 PLOT 7'-M , 1'1- Y
IS' .EMT Y
161 .EXT X v
171 RE" ROTATE COLOR 1£'I5T£15
lal CHOlD=PEEKe7IS)
1" X=7IS
2.' POKE X P££KeX+1)
211 X=M+1:iF X(712 THEI 211
221 POKE 712.CHOlD
211 'OTO 111
""
C H EC KSUM DATA
(See pgs. 7-10)
v
••
••
••
••
••
••
•• CiRAPHICS
••
••
••
••
••
••
••
••
••
••
••
••
••
••
v VOl. 1 THE A.N .A.L .O .G. COM PENDIUM PAGE 39
MOVINCi PLAYERS
IN BASIC
16 K Cassette o r Disk
by Tom H u d son
v
Figure 2 shows the simple player image used in Line 290 - This USR call moves the player
the demonstration program follow ing this article. to the desired X and Y location. This statement
The number to the right of each row is the total of the has 7 parameters ins ide the USR parentheses:
column numbers in which a pixel is "on. " If all pixels A=USR(MOUE,I,PNB,PMD,K,Y,7)
in a row are on, the number is 255 (128+64+32+
" MOVE" is set up in line 110. It is th e
16+8+4+ 2+ 1). If no pixels are on. the total would
add ress of the P/M mover subroutine. 00 not v
be zero. You will note that the player image in figure
change th is value.
2 is seven pixels tall, meaning that in order to display "0" means that we want to move player zero.
th is player image we will have to move seven bytes to
This value can range from 0~3, moving anyone
player memory. Try design ing your own player
of the fo ur players.
images using this method. Remember that players v
"PMB" is the P1M base address set up in line
using the two-line resolution mode can be up to 128
150. 00 not change th is value.
pixels tall.
" PMD " is the address of the string thac holds
The program. the player image data. This sho uld be set to the
Once you have designed your player images, you add ress of the string you are using to hold your
are ready to display them with the computer. The player shape data. If your player shape data is in
BASIC p rogram in Listing 1 will move all four a st ring called "PL$," you could replace PMo
players around on the screen . It calls the P1M with ADR(PL$).
movement assembly language routine, show n in The X and Y variables are the horizontal and
Listing 2. vertical coordinates of the player.
As listed. the p rogram will move the shape The last parameter, "7," indicates thac the
designed in Figure 2 around on the screen at random. player we are displaying is 7 pixels tall (see lines
The shape of the player is stored as a ser ies of bytes in 130 and 420). If the player you design is 10
the string PO$. By placing you r player image data in bytes long, place a 10 here.
line 420, you can change the shape that appears on Lin e 300 - This line determines when to
the screen. There are currently seven bytes in line randomly change the player's movement
420, but if you r player image has a d ifferent number, direction. If a random number is chosen that is
place the appropriate value in lines 130 and 290. greater than .95, a new direction is tr ied.
Lines 110~ 180 - Set up the subroutine and Line 3 10 - This line loops back to line 240
turn o n the P1M graphics. if no new direction is needed.
Lin es 220-230 - are fo r demonstration Lin es 350~380 - These lines contain the
purposes o nl y. You can put your program code assembly-language code fo r the playe r
in this section. movement subroutine. 00 not change these
Lin e 11 0 - loads the string PMMOV$ with lines, or the subroutine will p robably not work.
the P1M movement subroutine. Lin e 420 - This line contai ns the values
Line 130 - Places the data that defines the which represent the player image's shape. Place
graphics image into the string PO$. If your your image values here.
player image is more or less than seven pixels Summary.
tall, place the appropri ate value in this line.
The ATARI computer systems' player-missile
Line 140 - This line tells the system where
graphics capabilities are actually very easy to use,
the P1 M memory is located.
given the proper tools. The subroutine p resented
Line 150 - This line saves the address of the
here will help even the beginning ATARI
string that holds the player image data.
programmer experi ence the wonders of player-
Line 170 - Turns o n r i M direct memory v
missile graphics. 0
access so that the im age will appear on the
screeen.
Line 180 - Sets the color of player 0 to
Li sti ng I .
blue. The value 136 is derived by multiplying
the color number (8) by 16 and adding the 18 RE" •••••••••••••••••••••••••••••
luminance value (8). The result is (8*16)+8 or 28 REM *
P/M MOUER SUBROUTINE DEMO *
136. 11 REM
48 REM
SIREM*
** BY TOM HUDSOM
*
**
Line 220 - Initializes the X and Y
68 REM * A.R . A . L . O.~ . CONPutrMG •
coordinates of the player. The coordinates refer 78 REM •••••••••••••••••••••••••••••
to the upper left corner of the player. The X 88 REM
' I REM ••••••••••• SETUP ••••••••••• v
coordinate may range from 0·255. and the Y 118 REM
coordinate from 0-127. 118 DIM PMMOUS(108),P8$t18) :MO UE =ADR(P
HMOVS):FOR X=1 TO 108:AEAD N: PMMOUS(X)
Lines 230~280 - This section simply =CHAS(M,:NEXT X:AEM *READ ML DATA*
changes the player'S coordinates randomly. 128 RfH ***
NOW READ SHAPE DATA *** v
VOl. , THE A.N.A.L.O.G . COMPEND IUM PAGE 41
USINCi DLls
-
16K Casse tte o r Disk
b y Joseph T. Tre m
For many yea rs there have been powerfu l com~ play list uses all combi natio ns of the scan line from
puters on the market which performed mult i ~tasking graphics 0 to graphics 8 and allows you to set up a
functions. Not until a few years ago d id the home DLI on any line. For example, one could draw a sca n
computer acquire this capabili ty. At last! ATARI! line, change the background color, and so on. The
Having a 6502 m icroprocessor for its b rain, your final picture will appear to have a different color on
ATARI computer has the capability of using inter~ each line.
rupts. An interrupt is a tricky way of freez ing the To set up a DLI, there arc a few steps which have to
state of the microprocessor while perfo rming some be ta ken. First, we have to create a DLI routine in
other funct ion, then moving on when completed. machine language that will do what we want. This is
Here is an example. On a raste r scan TV, the called a service routine. Then we musr let the micro~
picture you see is drawn sixty times a second. The p rocessor kn ow where to find that routine by vec~
beam starts in the uppe r left~hand corner and even~ tori ng through $200 (low byte) and $20 1 (h igh
tually ends up in the lower right~hand corner. Th is is byte). That's 5 12 and 513 deci mal. Next, we set the
done sixty times a second. The time taken for the display list lines that we want the serv ice routine to
beam to travel from the bottom of the screen back to occur after with a DLl instruction. Finally, we must
the top is called vertical blank. During vertical blank , enable the DLI.
there is plenty of time for othe r processing. Using an Because the concept of the D LI is a hard one to fol~
interrupt, one cou ld check fo r vertical blank. When low and needs so me understandi ng of Assembly lan~
vertical blank occurs, it is possible to perform some guage, I have p resented an example ... a picture is
other function, then contin ue on. Some o f the more worth a thousand words! This p rogram. written in
com mon function s would be moving playe r/ mis~ BASIC, twinkles a sta rfie ld whi le running player/
siles, updating score coun ters, changing colors ... all missiles ... both appearing independent of one
between Vblank, as it is more commonly called. If anothe r.
these functions are performed during Vblank, there The program is well documented. In the example,
is no unsightly flicker on the screen. Besides, Vblank the service routine is located at $600. Every display
is p rocessi ng time to kill. right! list line has been set in the graphics 7 mode with a
ATARI goes a step fu rther by implementing a dis~ DLI instruction ( Figure 1). This was de termined by
play list interrupt or DLI. On a raster scan TV, the using the chart in Figure 2. The DLI instruction for
beam sweeps ac ross the screen, from left to right, graphics 7 is 141 decimal. Included with the BASIC
moves down one line, then does it again. One sweep program is the assembled listing of the service rou~
of the beam is one sca n line. h rakes 262 sweeps of tine which simply stuffs colors in the color register.
that beam to create a single frame on you r TV, all Hopefully, th is program will help you gain a better
done sixty times a second. In other words, there arc understanding of the DLI. It is among the most
262 scan lin es available on your TV. powerful programming tools you can use. Take some
ATARI designed their computer to evolve around time ro understand the concept. and you wil! greatly
the architecture of your TV set. Even bener, the dis~ increase your programming expertise. 0
........ VOL. 1 THE A. N.A.L.O. G. COMPEND IUM PAGE 43
A CiRAPHICS
CLIPPIN<i ROUTINE
16K Cassette or D is k
by Tom Hudson
Probably every ATARI user who has ever dabbled Line 190 - This line establis hes the initial
in the graphics area has encountered the infamous size of the s hape. Since SF is set at 0.5, the object
"ERROR 14 1 - CURSOR OUT OF RANGE." will start out half as big as defined.
This error message occurs when you try to PLOT or Lin e 200 - Th is line sets RF, the rotation
DRA WTO a point which is off the sc reen. The factor, to 10. With this value, the s hape will
program listings p resented in this article will rotate IO degrees cou nter~clockwi se each time it
demonstrate a BASIC subroutine which eliminates is drawn. A negative value will ro tate it
this problem, while drawing the porrion of the line clockwise , and a value of zero will res ult in a
which is on the screen. n on~ rotati ng s hape.
Listi n g I is the clipping routine . Type in this sub~ Lin e 2 10 - Th is line defines CX andCY, the
routine and check it for typing er rors. List this onto center coordinates of the object. The present
tape (LIST "C:") or disk ( LIST IIO:fiIe n a m ), SO values will place the object at the center of the
that it can be easily merged with other programs. screen. Try other values here and observe the
Li stin g 2 is a demonstration of the clipping res ults.
ro utine 's capabi lities. This p rogram is a gencral- Line 220 - Th is line is essent ial to the
p urpose shape rotation routine and will be expla ined operation of the clipping routine. It defines the
in detail later. Type NEW and enter this listing into limits of the sc reen area you wish to use. These
your computer, then check it for typing errors. values are currentl y set to the normal
When you are sure Lis ting 2 has been entered GRAPHICS 6 screen limits (X RIGHT= 159, X
correctly, ENTER the clipping routine from tape LEFT~O, Y B01TOM ~95, Y TO P ~O) . By
(ENTER "C:") or dis k (ENTER "D:filename"). changing these values, a s maller "window" may
The two listings will merge, forming one program. be created. For example, make the follow ing
RUN the program. You will see a square appear. It cha nges to line 220:
will begin rotating and increase in size until its 228 KA=88:Kl =68:Y8=SI : YT=38
corners run off the screen completely, and it
RUN the program and observe the result.
disappears altogether. Press BREAK to Stop the
The shape will be clipped to the new window
program.
limits. By using t his technique, very interesting
How it wo rks. d isplays can be created with independent
Line 150 - This li ne sets the BAS IC cl ipping windows!
DEGREE flag. This te lls the computer that all Line 2 30 - Th is li ne sets t he DATA pointcr
angles will be expressed in degrees. to line 360. This line contains the data wh ich
Li ne 160 - This line sets up a full~screen defi nes thc s hape of the object.
GRAPHICS 6 screen. Line 240 - Th is line reads the number of
Line 170 - This li ne tells the computer to points in the shape and dimensio ns X and Y
use color 1 when drawi ng. coordinate work arrays accordi ngly.
Line L8 0 - This line sets the s hape size Line 25 0 - This ti ne reads the X and Y
in cremen t (SI) to 1.1. This means that each time coord inates of each point in the shape and scales
the shape is d rawn. it will be 1. 1 times as large as t hem as requested in line 190.
the p revious plot. If 51 is set to 1, the shape will Lines 260~ 270 - These lines incrementthe
stay t he same size. If 51 is set to 0.5, the shape rotational pOSition of the object. Rotation
will shrink to half its size each time it is drawn. values greater than 360 degrees are adjusted
VOL. 1 THE A.N.A.L.O.G. COMPEND IUM PAGE 45
• CHECKSU M DATA
(See pgs. 7-10)
188 DATA 274.3",860 . 852,286.35.223,"
2,578,583.2",36,472.282.715.6391
258 DATA 317.285.346.81'.167 . '88,212,'
",135,523,722.'51.5'55
VOL. 1 THE A.N.A. L.O.G. COMPENDIUM PAGE 47
3-D CiRAPHS
MADE FAST &EASY
16K Cassette or D isk
by Tom Hudson
Thanks to ATARI's G ra ph-It (TM) graphics In a 3~di men s i o nal graph , things are a little mo re
package, ATARI computer owners can generate bar complicated. As the name implies, we are t rying to
charts, pie graphs, and two- and three-dimension al generate a 3~dimens i o nal fo rm , deri ved from an
plots. Unfortuna tely, when mo rc complex three- equation. To do this, we need thrce coord inates. Wc
di mensional plots are desired. G raph -It can tak e will label these coordinates X (width), Y (depth) and
mo re than an ho ur to com plete iust one plot! Z (hdghr).
In o rder to assist those G ra p h -It users who
would like to see a quick rendition of their 3-D p lot
before com mitting themselves to a marathon wait
with G ra ph-It, I have written a 3-D grap h program
which is easy to usc and prod uces gra phs very z
quickly. y
By now, many readers are p robably ask ing, " What
in the world is a 3- D graph !" which is not a bad
qu estion at this poi nt , and o ne I will cry to answer.
We arc all familiar with 2~dimens i onal (flat)
graphs. They are usually ca lled "l ine " o r "bar"
x
graphs. Figure I is a line graph of the eq uati o n F igure 2 .
Y= 2*X. When X is four, Y is twO tim es four, o r
eight, and so on. W e start with a grid marked \vith X and Y
F igure I. coordinates, then we lay this grid flat as in Figure 2
(a good way to visualize this is to lay a piece o f graph
paper on a table in fro nt of you) . Next we use an
eq uatio n to determine the Z coordin ate. Th e Z value
tells how high off the table each point o n the grid is.
v The Z coordinate is alwa ys deri ved from the X and Y
val ues. In this way, we can see how changes in the X
and Y values affect the Z val ue. For exam p le, in the
,• equation Z=(X+Y)*3, when we are at the
coordinaccs X= i and Y= 3, Z would eq ual 12 (4
,• times 3). O n ou r graph , this would be represented as
a small peak (Figure 3), tell ing us that where X= 1
•3 and Y=3, the Z value is 12. O f course, to be useful
, this process must be repeated (o r each point o n the
grid so t hat we can see t he overall results. Three-
dimensional graphs arc useful (or visualizing how an
equation will ac t wi th varyi ng X and Y values.
PAGE 46 THE A.N.A.l.O.G. COMPENDIUM VOL . ,
.
-Y3)/ (V4 -Y3 ):X3 =XW:Y3=YW:RETURN CHECKSUM DATA
718 RETURN
- CHECKSUM DATA
(See pgs. 7-10)
CiRAPHIC VIOLENCE
16K Casse tte o r Disk
by Tom Hudson
When writing game programs, man y in the COORD I DATA , " INIT ERR " is an erro r in
p rogramme rs automatically c hoose assembl y the INITIALIZATION CO DE, etc. Find th e error, v
language over BASI C because of the obvious speed fix it and re ~ RUN the program.
advantage. T his can sometimes be a m istake, since Once the co mputer starts cycling colors, press
BASIC offers so me funct io ns (such as sine, square SYSTEM RESET before doing anything else.
root , etc.) not easil y written in assembler. One way Whenever operating any program using the Graphi c v
to take advantage of the convenience of BASIC and Violence subroutine, you MUST use the SYSTEM
the speed of assembler is to combine the twO RESET key to terminate the program. The sub~ v
languages. ATARI BASI C allows the user to "call" routine automatically disables the BREAK key si nce
machine~language subrout ines, which can be man y typi ng commands in immediate mode while the
times faster than the sa me routine in BAS IC. subrou tine is in operation will usua ll y ca use a system v
In o rder to assist those game programmers who crash . Pressi ng SYSTEM RESET will correctly
would like to ha ve d ramatic explosion effects in their terminate the subro utine and avoid any problems.
BASI C p rograms, I have developed G raphic At this point, you should have a correctl y
Violen ce , a group of assembl y~language subroutines. opera ting G raphi c Viole n ce in itializa tion s u b~
These ro utines allow BASIC to generate up to 20 ro utine SAVEd on ta pe or di sk.
simultaneous explosio ns in G RAPHICS 7. The y can P rogram 1 Flo w . v
optionally generate sound effects as well as "cycle" Line 80 - GOSU Bs to line I()('X)() (0
the colo rs of the explosions fo r an interesting initialize the subro utine.
" radioactive glow" effect. Line 10010 - Dimensions the strings
The fi rst half of this article is a n o n ~ tec hn ica l needed by Graphic Violence and RESTO REs
explanatio n of how ro use G ra phic V iole n ce. The the DATA poimer.
second half is an in~depth discussion of the actual Lin e 1 002 0~ I 0060- READs DATAsmte~
assembly language code for those interested in the ments into the strings used by the subroutine .
inner workings of the subroutines. u
Line 10080 - POKEs graphics PLOT
Using G ra phic Vio le n ce. values into Graphic Violence.
Lis ti ng I is th e BASIC language code necessary to Line 101000 - Ca lls the mac hin e~
set up the G ra ph ic Viole nce subro utine. This code language initializa tion routine. It is of the form:
should be placed in any program that is to use the A=U5A(ADA(I.IT$). ADR(MQI.S) .ADA(COORD!
explosion generator. After typi ng this program in, $).ADR(COOAD2$) . COlOA . SOU MD)
SAVE it immediately, BEFORE RUNNING IT! The
routine has some safeguards against typing errors in The COLOR value tells whether or not you want
the DATA statements, but if it is executed with bad the color of the explosions to cycle. In the program
listing, this value is set to I , indicating that cycling is v
DATA, the system may crash and irwill be necessar y
to re-type the program. desired. If you do not want cycl ing, place a 0 here.
After the program is typed and SA VEd, RUN it. If The SOUND value tells whether or nor you want
it is typed correctly, the program will run for severa l the ro utine to generate sou nds with the explosio ns.
In the listing it is a I, indicating that we want sound.
seconds before anything happens. The screen colors
will begi n cycling quickly. If not, an error was made If sound is not desired, place a 0 here.
somewhere, and you should r e~boot your system, Line 10 11 0 - This line simply returns from
load the SA VEd program , find the mistake, SA VE it the subroutine to the main program
and try again. A sh ort d em o n stration .
If a message such as "COO RDI ERR" occurs, you With Listing I in your computer, add Lis tin g 2
have made a mistake typing in the DATA stateme nts. to the origi nal program and RUN it. This is a short
"COORDI ERR" indicates that an error was made demonstration ro ut ine which simpl y places an
VOL. 1 TH E A.N.A.L.O.G. COMPEN D IUM PAGE 51
explosion at the center of the screen, then repeats. the program to continue at line 320 (the "THE
By looking at this short routine, you will not ice END" routine). This TRAP statement will take
the USR call in line 220. This is the comma nd which effect when a bomb falls off the bottom of the
starts an explosion. Once the Graphic Violence screen.
machine-code subrouti ne is set up, this short Line 2 50 - Gets the X and Y coordinates
operation is all you need to generate explosions. where the bomb will sta rt its d rop.
Remember to stop the program by pressing Line 270 - Erases old bomb position (using
SYSTEM RESET. COLOR 0) and increments Y position so that
P rogra m 2 Flo w . bomb will "fall" towa rd bottom of screen.
Line 290 - Uses the LOCATE command
Line 190 - Set up a full-screen graphics
to see if the bomb has hit anything. If the bomb
mode 7.
hits color 1, an explosion is started at the X and
Line 220 - Call the explosion-starting
Y coordinates and a new bomb is randomized.
machine language routi ne. This line actually
Li n e 3 10 - If no hit is detected, the bomb is
starts the explosion. It is of the form:
plotted in color 2, the program waits a fraction
A ~ U5R(ADR(EHPL$).H,V) of a second, then continues at line 270.
X and Yare the screen coordinates of the center of Line 330 - When a bomb falls off the
the explosion. In the Li sting, X= 80 and Y= 48, bottom of the screen, the error is TRAPped
placing the explosion at the center of the screen. here. At this time, the computer sets up a new
This statement is the heart of the Graphic graphics 7 screen, sets the explosion brightness,
Violence routine. Once this statement is executed, it and selects COLOR J.
starts off an explosion while BASIC continues with Line 350 - This line RESTOREs the
whatever it is doing. In addition, the explosion DATA pointer to line 400 (THE END shape
handler can operate up to 20 explosions simultan- data), reads fro m-and-to plot data and draws
eously, while BASIC does irs own processi ng! the T H E END message on the screen.
Line 240 - This line is a simple delay loop Lin e 370 - This line sets off 200
which allows an explosion to dissipate before explosions. which destroy the THE END
generating another. message. Note that the explosion USR ca ll has
Line 26 0 - This line goes to start a new random number functions for X and Y
explosion after the wait. coordinates of the explosion center. There is
In the previous example, we generated one also a 40 count delay after each explosion is
explosion at the center of the screen, juSt to keep started fo r a more interesting display.
th ings simple. In the next exa m ple, we will see how Line 390 - After all explosions are
the Graphic V iolence routine will handle up to 20 generated, wait a few seconds and GOTO line
simultaneous explos ions without the programmer 190 to re-run the demonstration continuously.
having to worry about what's going on inside the Line 41 0 ~4 30 - These lines contain PLOT
explosion handler! All the programmer needs to do da ta for the words "THE END." Each line in
is send the explosion coordi nates to the routine via the letters is represented by 4 values, made up of
the US R command and let the com puter do the rest. 2 sets of X and Y coordinates, the line
(What could be simpled) endpoi nts.
With Listing 1 in your computer, add Listin g 3 Summa r y.
to the original program and R UN it. T he program The Graphic Vio le n ce explosion generator
will fill up most of the sc reen with graphics, then subroutine will operate in almost any game using
start dropping "bombs" from the top of the screen. graphics 7. Explosions ove rl appi ng the edges of the
As they hit the graphics area, they will explode screen are automatically "clipped," but the program
violently, "eat ing" away the graphics. As soon as one has minimal error-trapping. T he user should take
of the bombs falls off the bottom of the screen, an care to make sure that the coordinates supplied to
end message will be displayed and subseq uently the routine do not exceed the graphics 7 screen
destroyed by a number of explosions. The progra m limits. The routine uses sound channel 1 when the
will run con tinuously and MUST be stopped by sou nd generation option is requested. T he
pressing SYSTEM RESET. Explosions use COLOR 3 (SETCOLOR 2), and will
Program 3 Flo w . cycle the color only (not brigh tness) if color cycling
Line 190 - Sets up graphics mode 7 and sets is requested. Any program usi ng the G raphic
COLOR 112 (the explosion color) to maximum Vio le nce routine must be terminated with Sy S-
brightness. TEM RES ET to avoid a system crash.
Line 210 - Fil ls up the bottom section of The follow ing sectio n contains a discussio n of the
the screen with COLOR 1 graph ics. assembly-language routines that make up G ra phic
Line 230 - Makes sure any error will cause Vi o lence . This information is not necessary to use
PAGE 52 THE A. N .A.L.O.G. COMPEND IUM VOL. 1
the subroutine, but may assist those interested in Subroutine) returns control [0 your BASIC
assembly language and the inner workings of the program after the initialization is complete.
ATARI computers. The second assembly language program ( Listin g
5) is the explosion start routine. It is called by the
Back gro und info rma tion . BASIC statement:
A=USRCADRCEKPl $ ).K . Yl
The Graphic Violence subroutine is made up of
three program segments and twO data tables. These This routine simply accepts the coordinates of the
five modules work tOgether to provide a machine- explosion from BASIC. If there are 20 explosions
language explosIOn generator for BASIC. active, it will ignore the request, otherwise it will
The first assembly program (Listing 4 ) is the send the coordinates to the main module, which is
Graphic Violence initialization subroutine. It is executing in the deferred vertical blank.
stored in the BASIC string variable INIT$. Its P rogra m 5 Flo w .
function is to accept the locations of the main Lin e 200 - Once again, this Listing has its
program module. and accept the color cycling and location counter set to $6000. It makes no
sound generation options. difference, since this routine is fu ll y relocatable.
Remember that this is the routine called in the Line 2 10 - As in the previous Listings,
BASIC statement: this line discards the first item on the stack (the
~ = USR(ADR(I.IT$).ADR(~I.$).~DR(COORDI
number of arguments passed to the assembly
$) . ~DR(COORD 2 $). C OlOR. S OU"D) routine).
Lin e 220-240 - These lines check the
variable EXPCNT to make sure the new
Program 4 f low. explosion can be started. If there arc less than
Li n e 230 - This line arbitrarily sets the 20, control is passed to EXPOK (explosion
location counter to $6000. Since this routine OK).
will be fully relocatablc and stored in a BASIC Lin e 250~290 - These lines are used if
string, this address does not matter. there arc already 20 explosions. The remaining
Line 240 - This PLA instruction pulls the 4 bytes are pulled from the stack and discarded.
first argument off of the stack. In a BASIC USR and the program returns to BASIC. No
call, this argument is always the number of explosion is generated.
arguments passed to the machine language Line 300~ 350 - In a manner similar to the
routine. We do not use it in this case, and it is COLOR and SOUND parameters in Listin g
discarded. # 4 , this routine pulls the X and Y coordinates
Lin e 250#270 - This section zeroes out the off of the stack and places the values in NEWX
explosion ready flag and the explosion counter. and NEWY for use by th,e main module.
Line 280#330 - Th is section pulls the low Line 360 -370 - Th is section places a I in
and high bytes of the address of the main READY flag, which tells the main interrupt
routine (ADR MA IN$), transfers them to the X routine that a new explosion is ready to start. v
and Y registers. then PUtS a 7 in the accumulator Line 380 - This RTS instr uction simply
and jumps to the SETVBV subroutine. This returns control to BAS IC. In this way, the
tells the syStem that we are using a vertical blank interrupt can start the explosion graphics while
interrupt. The 7 indicates that it is a "deferred" BASIC keeps running normally.
vertical blank routine, that is, it operates aftet The third assembly language routine (Listing
the system's vertical blank operation. 6) is the vertical blank interrupt routine, stored in
Lin e 3 4 0-4 10 - This section pulls the low MAIN$. It docs all the color cycling, sound, and
and high bytes of the two sets of plot graphics for the explosions. Since it is an interrupt·
coordinates (COORDI$ and COORD2$, 4 driven p rogram, it operates independently of
PLA s total) and stores them on page zero ($CB· BASIC, allOWing BASIC to continue processing
iCE) for later use by the main module. normally while the vertical blank docs all the
Line 4 20·4 40 - This section pulls the color explOSion work.
cycle indicator (COLOR) from the stack. Since Since this program is stored in a BASIC string. any
this is a one#byte indicator and the system sends program editing or immediate mode ope rations in
a two·byte argument, the first byte (high byte) is BAS IC while the vertical blank routine is running
discarded and the second is stored in CYCFLG. will cause a system crash. This is due to the (act that
Lin e 450#4 70 - Th is section is the same as BAS IC moves its variables around in memory during v
lines 420-440, except that it stores the sound editing of programs, and such movement of the
indicate, (SOUND) in SNDFLG. interrupt routine will confuse the system. To help
Lin e 4 80 - This RTS (Return from avoid such a problem, the G raphic V iole nce
VOL. 1 THE A.N.A.L.O.G. COM PENDIUM PAGE 53
interru pt rou tine disables the brea k key, making it Line 960- 1000 - Increments the explosion
necessary to press SYSTEM RESET to stop program counter. If the counter is greater than the
execution. Th is is o nl y a partial solution, however, c urre nt number of exp losio ns active
since if the programmer all ows his program ro cnd (EX PCNT), the routi ne jumps to XITVBV, the
with the READ Y prompt, then enters a program ve rtical blank exit vector. Otherwise con trol is
line, the crash will still occur. passed to INDEX.
The interrupt routine perfo rms several func tions. Line 1130-1350 - This section repacks the
First, it d isables the BREAK key and cycles the colo r XPOS, YPOS and CNT tables to eliminate a
of playfield 2 if necessary. Next, it processes "dead " explosio n. It then branches back to
sou nd , if requi red, using sound channel I . The last RUNlP to handle the next explosio n.
major function it performs is that of explosion Line 1360-Z350 - This routine turns
graphics generatio n. explos ion pixels on or off, depending on the
Each explosion graphic is made up of 89 separate PlOTCLR setting. If the pixel is off the screen ,
pixe ls. The rou tine uses the specified centerpoint of the plot is abandoned by a bra nc h to RUNlP.
each explosion and adds X and Y offset values, which By ex pand ing the XPOS, YPOS and CNT tables
arc stored in the BASIC string va ria bles COO RD I $ and altering the explosion call rou tine (Listing 5),
and COO RD2$. Each of the 89 pixels are first ad vanced users ca n enab le che G raphic Violence
turned o n, o ne pixel at a time, resuhing in a routine to handle many more explosions than it ca n
"growing" appeara nce. After all 89 pixels are o n, the now. However, 20 explosions are more than enough
v
!171 LIlA COlOR ,SET LAST CIilOR 1348 L~ if! iFORC£ ~ v
6188 ClC jlt~ IT ml Ba RtIlLP ;TO NEXT EXPL .
1191 AOC 116 JSY 16 1).IIIIOPlOT INC OO .X ;INC COOITER v
i611 ST. 0l.1l! ;~ SAlJE IT :37' lAY ;EXP P~SE IN T
1611 LIlA CIilPFl iGET COLOR REG . 1381 LIlA _ .X ,G£] X-COOlJ) ~
V
VOL 1 THE A.N .A.L .O.G . COMPENDIUM PAGE 57
'-'
v
V
ATARI 1020 PRINTER DEMO '-'
'-'
V
C H EC KSUM DATA
(See pgs. 7- 10)
•
VO L . 1 THE A.N.A.L. O.G. COMP ENDIUM PAGE 61
DISK FILES:
v
USING NOTE &POINT
v 32 K D i sk
\......< by J e rry White
This is a demonstration program that creates a 100 POINT to the secto r and byte of record 50. At line
record inventory file and permits the user to update 780, we INPUT that record, clear the screen, and
the file using random access. Random access all ows d isplay record 50 o n the screen.
v imm ediate access to any given record in a file without Remembe r the number of items in this record,
reading each record again and agai n . press any key, and you will be returned to the option
The rest of this article assumes you have typed in routine at line 5000. Type 2 and this time we will
the p rogram. If there were no errors in typing, you change record 50. Type U and press RETURN, then
should now have 3 options on the screen. Fi rst, we type 50 and press RETURN. Record 50 will again be
must create a data file, so type 1. This will send the d isplayed, but now we have 3 new optio ns. Let's take
program to line 100. We will now create a 100 record them in order. Type 1, then press RETURN. To
file to work with. Each record will contain a record update the qua ntity, we merely add to it by typing
number, an item count and an item description field. the number of items to add, o r subtract by typing a
Each field is separated by a comma. As the file is negative number. Remember that our quantity field
created, it witl be displayed on the screen. After is only 3 positions, so don't increase it to more than
record 100 is written the file is closed, and you will 999 items.
be returned to the 3 original options. After read ing the record from the datafile, we
Now type the number 2. In o rder to use random store it in a string call REC$. The quantity field is
access updating, we must know exactly where each updated in the string. It will be updated on the d isk
record begins on the diskette. Before updating, the only when we choose option 3 to exit. Before we exit,
program will create an index using an array in mcm~ let's change the descriptio n field. Type 2 and press
ory. Once this is done, we can instantly find any re~ RETURN. Choose a new description and type it.
cord using the PO INT instruction. But first, we must Now type ), and the record will be updated on the
NOTE the location by storing the sector numbe r and disk.
byte in our arrays. We only have to do this once. To be su re that the record has been changed pro~
Then we can inspect or change as many records as perly, you can choose the d isplay/ update option
needed. then redisplay record 50. By now, you can sec the
The index is created usi ng th e routine starti ng at adva ntages o f random access updating. You don't
line 300 and ending at 420. Line 500 is the beginning have to read t he first 49 records to get to record 50.
of the random access routine. You should be able to Once the arrays of the sectors and bytes contain the
fo llow the program listing, si nce the variables used beginning of ever y record, we ca n locate any record
will all be defined at the end of this article. At this instantly. 0
time, I wi ll o nl y expla in how the NOTE and POINT
instructions are used.
At lin e 310, we check a flag to sec if an index has
28 REM IIUEITORY TUTORIAL PROGRAM TO 0
already been created. If so, we do not have to repeat EMONSTRATE RAIDOM ACCESS UPDATING
this procedure and go to line 500. To create the in~ 31 REM ***BY JEARY WHITE ***
58 DIM SEC(188)~BYT(188).AEC$(18),DES$
-
dex, we read the data fi le. Before reading each record, (11),CHOICE$(1):CI=8:&OTO 5881
we NOTE the sector and byte position and put it into II. EM *** CREATE I.ITI~L D~TA FILE *
our SEC and BYT arrays. I I . FDA BLAIK=l TO 31:AEC$(BLAIK,BLAIK
Once the array is complete, we are ready to display ) =" ": IIEXT BLAIIK
128 CLOSE IU : OPEl IU . 8, e. "D: DATA FILE"
or update any record in the datafile usi ng the PO INT 131 REC$(4~.n = " ~ ":REC$(1I.3.)=".ITE" DE
instruction to locate the record we want. Let's start SCRIPTIOII FIELD"'
14. FDA AECORD=l TO 180
by displaying record 50. Type D and press RETURN. 168 IF RECORD<ta THEI REC$U,2)=""":R
v Then type 50 and p ress RETURN. At line 760, we EC$(1.3' =STR$(AECORD):&OTO 228
PAGE 62 THE A.N. A.L.O.G . CO MPENDIUM VOL 1
16 K Di sk
b y To ny Messina
This utility is rather simple in nature, but can Input / Outpu t (CIO) portion of the ope rating sys~
prove qu ite helpful when trying to remember what tern when communicating with the device on the
program is on which diskette. In order for this utility 10CB specified.
to work, you need the following items: I) a disk Now that we know something about IOCBs, let's
d rive, 2) a printe r (40 or 80 column), 3) an ATARI look at how we set them up.
computer with at least 16K of memory. The utility O PEN and CLOSE.
itself will give you a neat, fo rmatted hardcopy of The OPEN comma nd allows us to communicate
you r d isk di rectory (l to ld you it was simple!). The with a device using the Cia faci lity. We don't have
following article shou ld also give you a general idea to know machine language to access a device. , . we
about IOCBs and the OPEN / CLOSE statements ca n use BASIC instead! OPEN just dedicates an
which are part of the BASIC repertoire . 10CB to perform our command. We can think of it
I OCBs. as opening a hotline to o ur device. The line will sta y
Many programs appearing in this book use OPEN open until we hang up o r CLOSE it. The form of the
and C LOSE statements to perform a particular func~ OPEN command is as follows :
tion. I'm sure such questions as " What is being OPEN #IOCB,I/ O CODE, SPECLAL, DEVICE
opened / closed," "How/ Why is it being opened / Parameters can take on the follow ing values:
closed," and "How can I open / close my own 10CB - Any number from 0-7. Usua ll y only I ~S
thi ngs!" have crossed you r mind, so now would bea is best, since the ope rati ng system uses IOCB 0 for
good time to find out what it's all about!! the sc ree n / editOr, 6 fo r any graphics window (I'm
One of the most d ifficult things to do on any com~ sure you all have used a PR INT #6 statement) , and 7
puter is IN PUT/ OUTPUT, or 110 for short. Would for LPRINT and Cassette I/ O.
you like to write the program (commonly called a L/ O CODE - 4- INPUT, 8-0UTPUT, 12-
driver) to print to the printer or list to the disk or INPUT and OUTPUT, 6- DISK DIRECTORY IN-
input a cha racter from the keyboard! It really isn't all PUT and 9-0UTPUT (APPEND TO END OF
that fun. Thanks to those great ATARI folks who FILE).
designed our systems (the operating system in pa r ~ a
SPECIAL -Is usually but can be filled in based
ticula r ), we don't have to worry too much about the on the device you arc usi ng. If you are opening a
above ~ mentioned items. We can control out I/ O screen mode othe r than GR.O, you would need to
through an IOCB or Input/ Output Control Block. put the GR. mode number in the SPECIAL para ~
The operating system has eight IOCBs. Each meter. If you have a sideways printing printer (sa y
IOCB contains information as to the nature of the that 10 times quickly), you could get it to print side~
device we want to communicate with, where the ways by putting 83 as the SPECIAL pa rameter.
driver for the device is located, where the buffer for When in doubt, use O.
the device is located , the length of the buffer, the DEVICE - Devices which we can control and
command we are trying to execute on the device which BASIC knows about are the KEYBOA RD
(OPNE, CLOSE, PUT CHARACTER, GET CHAR- " K,", GRAPHICS W INDOW "S,", PRINTER
ACTER, etc.), timeout values (i.e., how long do we " P:", CASSETTE "C:", DISK FILE "D:filenamc.
try to execute a command before we decide to give ext", SCREEN EDITO R " E, " and RS232 PORTS
up), etc. This information is used by the Ce nrral OR:".
PAGE 64 THE A.N.A .l.O. G. COMPENDIUM VOl. 1
v
18 REM ••••••••••••••••••••••••••••••
When opening a device, we must make sure that 15 REM * UTILITY a4 *
the paTameters make sense. We wouldn't want to 28 REM * DISkCAT VER . 1 *
open a printer fo r INPUT and OUTPUT, since most 2 S REM * BY TOIV ttES'n lA
3 8 REM * fDA A.I . A. L.O.' . COMPUTI.'
**
printers only allow OUTPUT. It also wouldn 't make 15 REM ••••••••••••••••••••••••••••••
sense to open the graphics window for DISK DlREC~ . . RE" *
'S RE" •••••••••••••••••••••
TO RY INPUT. See ... it's not all that co mplicated. 58 RE" * MAKE SCRfEI TITLE
55 RE" •••••••••••••••••••••
*
Once we have opened a device, there are man y 68 RE" *
6S GRAPHICS 2:START=PEEktS68'+PEEKtS61
thi ngs wh ich can be done. Commands s uch as PUT '*2S6 : POkE START+',6 : POKE START+ll,6 : P
#, GET #, PRINT #, etc. can be executed by BASIC OKE START+11.5
directly to t he device we have opened . The o n ly thing 71
75"
712,32: .ul~c •..'." ..., ~~
: ? U:6 :? ..
we have to remember is not [Q use an in val id com- '>= ='~= = ,,~==
mand for the 1/ 0 CODE selected. If we opened the .. Cltil
GRAPHICS W INDOW fo r OUTPUT, for exa mple, :? U:6;
then we could not use the GET command . Experi- 8. v
ment using O PEN with its associated com mands and
you' ll soon become proficient in the mysterious
••
'5 RE" •••••••••••••••••
180 REM * VARIABLE I.IT *
v
world of ATARI 110. 185 REM •••••••••••••••••
118 REM *
H o w DOD u ses IOCBs. 115 DIM DfVStZJ:DIH TA8$t'8':OIM DIAfe
This utility opens 2 10CSS. 10CB I is ope ned for TORY$(S):DI" fILEMAME$tl"lDIM A.SStl)
output to the printer in LINE 220, and 10CB 2 is
1211 DIRECTORY$="O:* .*" : TAB~="
125 DISK=2:PR.TER=1:DIATAB=11:COLNXD=4
..
opened for disk di rectory input in LI NE 230. The
8:0UTPUT=8:.ULL=e : DIRI.=6 : COU.T = 3 : ~PAC
filename to get has been set to "D:**", since we want £=3
to see all of the fi les. DEV$ is simply set to " P:" for 138 REM *
115 REM ••••••••••••••••••
the pri nter. I also set all my codes to constam s for 1'1 REM * GfT USER INPUT *
easier reading. The values can be fo und in LI NES ••••••••••••••••••
llS - IZS.
W ith these two 10CBs open, the rest of the utility
* COLUMN WIDTH
v
*
~~~~~~~~~~~M~.~~~M~~ •••••••
*.**GET fILENAMES AND PRINT *
•••• *.~~.* •• ~*~M** •• ~~ ••
aPRNTE
/2) - 1];
*~.~**********~**~***~**.
*•••••••••
ERROR TRAPS fOLLOW *
•• *••
~.~ ~.*.*.*
*:
'PRIHTER DOES NOT RESPOND'I~ ':G
':CLOS
: ,
•
CHEC KSUM DATA
( See pgs. 7~ lO)
Rainbow Demo
CHECKSUM DATA
(See pgs. 7·10)
5 DATA 557,836,238,324,386,388,233,255
,645,111,5",4476
PAGE 66 T H E A.N.A.L.O.G. COMPE NDI U M VOL. 1
BURPI
16 K D isk
by C h a rles Bachand
Over the years, we have all run across diskettes rhat sector; no other file is currently using it. It also
that just would not format. This was probably due to follows that if the bit is off (0). the sector is currently
a scratch or dent on the disk surface, and even in use and should not be touched.
though the ATARI 810 disk drive returns the \Ve next compare these bits with those of a freshly
addresses of bad sectors to the computer (Huh, I formatted disk. If the bit is on then BURP will shut it
didn't know that!), the disk operating system makes off to mark it as being in use. However, ifit was in use
no use of them. Well, how would you like to be able to begin with. then we arc in trouble and BURP will
to use those disks that up until now you have been produce a bad sector error.
feeding to the trash? The last part of the program will check the number
BURP (Basic Unusable·disk Rec laimer Pro· of sector errors on the disk. If there were no errors
gram), is a machine language program that patches encountered, the program merely writes the first
itself into DOS's disk formatting routine. Being an directory sector. Otherwise. we build a fake fi le entry
AUTORUN.SYS file, it is loaded when the with the name "Bad Sectors" and a length of the
computer is first powered on and is essentially number of bad sectors. This entry is used as a flag to
transparent to the user. The only programming identify which of your disks caused problems.
limitation is that no other program can reside within The completely documented Macro Assembler
the address space $600·$694. listing follows, as well as a BASIC program to
There are a couple of limitations involved in using gene rate BURP.
BURP, There are twO more limitations of this program
1) The program will still return a bad sector error that have su rfaced. The larger of the two problems is
and abort if any bad sector is in the space taken up by the fact that it witl nor work with Percom disk drives.
the disk directory (sectors 360-368) or the disk boot This is due to the fact that the Percom drive does not
(sectors 1·4). re(urn bad sector numbers to the operating system if
2) Do not save DOS out to a disk after BURP has it cannot format a disk. The second problem shows
run without also saving a copy of the up if you try to duplicate a disk using ooS option
AUTORUN.SYS file containing BURP to the same ")." OOS 2.0S copies all seCtors whose correspond·
disk. The DOS will have been patched into BURP, ing bit in the VTOC is set, it will try to copy the bad
and without BURP itself loaded into memory any sectors which it cannot do. It will instead issue an
attempt to format a disk will cnd with DOS dying a error meSs.1ge. A way around this wou ld be to copy
terrible death! (In other words, it bytes the dust.) individually every file on the disk.
BURP is divided into three sections. The fi rst is a To generate the BURP program and hflVe it
group of patches that load into the ex isiting DOS. SA VEd to a file. run the BURP maker program
These patches wedge BURP into the Disk Operating written in BASIC. Theobject program will be stored
System, and reduce the error retry count to allow on file D:AUTORUN.SYS, which will automatically
the OS to say "I give up!" a lot sooner. load the program after DOS is loaded.
Next follows the main section of the program that If you want the option of using BURP or nor using
converts the bad sectOr numbers returned by the 810 it, simply change the file name specified in the
disk drive into the corresponding bits of the disk opening statement to something other than
directory's Volume Table Of Contents (VTOC). D:AUTORUN.SYS. To run BURP now, it will be
The VTOC has a bit for every sector on the disk. If a necessary to call up the DOS Menu and perform [1.
bit is on (1), this [ells DOS that it may store dara in binary load from yOur chosen new file. 0
VOl. 1 THE A.N.A.L.O.G. COMPEN DIUM PAGE 67
Swirl Demo
18 C=8:0=J:SfTCOLOR J,5,5:DEG
28 KI=88:VI=5B:GRaPHIC5 23
38 PLOT HI,VI
, . fOA 1=1 TO IB88 STEP 5
SB Q: O+l:IF 0}3.5 THEW 0=1
68 COLOR 0 : R=I/J8:T=I
7e K=R*c05CT):Y=R*SIWCTJ
88 IF Y+YI<e THEM 14e
'8 PLOT K+KI.Y+YI
J88 R=CItC)/J6*C05CItCt'8J
J18 Y=CI+C)/16*SIMCI+Ct,.)
12. DRAWTO K+KI,Y+YI
138 KERT I
J48 5ETCOlOR 2.8,2:5ETCOLOR 1.8,5
158 5ETCoLoR 8,8.8:&OSU8 218
168 SET COLOR a,8,2:SETCOLOR 2.8,5
178 SET COLOR J,8.8:GOSUB 21.
18. 5ETCOLOR 1.8,2: SETCOLOR 8.8.5
1'8 5ETCOLOR 2.8 , 8 : &05U8 218
288 'OTO U8
218 FOR 1=1 TO 11 : NEXT I:R£TURK
CH EC KSU M DATA
(See pgs. 7-10)
18 DATA '77,537,75 , 338,27',7,362,858,.
82 , 117,132,836,737,378,877,6'68
1 68 DATA 373 , 886,376 . 8'5,6'7 . 16 3.3 3"
VOL. 1 THE A.N.A.L.O.G. COMPENDIU M PAGE 69
48K Disk
by Brian Moriany
L ...·['s face it. Backing up disks with a sing!...· drive is lines 1000- 1290. When you're finished, LIST the
a dull and time-consuming chore. Even with a 48K program out to disk and use D:CHECK2 (sec page
system. ATARI DOS will make you swap at least 9) to verify the accuracy of your typing. Use the
three times to copy a reasonably full disk. And then follow ing proced ure co wri te your copy of Black
there afe those d isks DOS won't copy - boot-load R,bb;t 2.0,
programs, Letter Perfect files, FORTH screens,
anything recorded with a non-DOS file structure. I. Load the BASIC program into memory and type
O ne day 1gO( sick of disk-swapping anJ decided to RUN. The line numbers between 1000-1290 will be
write a more efficiem disk backup system. I wanted displayed as each DATA statement is checked.lfbad
ro be able to duplicate all 720 sectors of a disk with dara is encoun tered. the program will list the line
no more than two read / wri te passes. To accomplish containing the error and stop so that you can correct
this,I had to find a way (Q cram 360 sec(Qrs worth of it. Re-RUN the program umil all data lines afe
data into RAM at once - 46080 bytes! thoroughly debugged.
A 48K ATARI contains 49152 bytes of user 2. You will next be prompted co insert a blank d isk
RAM. But the first four pages ( 1024 bytes) arc into drive 111. Make sllre Ihis diskmnlains no im/.>onam
reserved for use by the operati ng system ROM /Jwgrams or dala, because il is a/xml 10 he (omplclCly
routines. A graphics mod e 0 screen and d isplay list t'T(ued.
require an additional 993 bytes. This leaves a 3. Press the START key. The dest ination d isk will
maximum of 1055 bytes fo r the disk copkr. be formatted and a copy of the Black Rabbit will be
The Black Rabbit fits into this cramped space with written out to the first six sectors. An error message
room to spare. Version 2. 0 fe atures simple one- will result if the disk is write-protected or cannQ[ be
button operation with audio/ visual prompting, for matted.
automatic formatting of the destination disk and a 4. The prompt "Rabbit disk okay" means success!
"Visible VTOC" (Volume Table of COIHents) that Remove the Rabbit disk from the drive, replace it
lets you check the distribution of data on the source with one of your regular DOS disks and SAV E the
disk and monitor the progress of the copy. It "skips BAS IC program. You can use it to make extra back-
owr" empty sectors and wilt not crash if it up copies of the Rabbit.
encounters an unreadable sector. Rabbit, Run.
Typing it in. Now it's time to test the Black Rabb it. Rc-insert
Listing I is an ATARI BASIC program that will the Rabhit disk in drive 11 1, turn o ff your computer,
create an auto-booting image of the Black Rabbit on let it rest for a moment and turn it back on,
:lny disk. Listing 2 is the assembly-la nguage sou rce If you see "Remove cart ridge; requires 48 K
code, created with the MA C / 65 Macro Assembler RAM" on your screen , you forgot to remove the
by OSS. This listing is only prov ided to show you BASIC ca rtridge. The Black Rabbit needs every byte
how the program works; you do NOT havc to type it your computer can spare, and the cartridge de-
in to use the Rabbit. selects an 8K block o f RAM. So pull the cartridge
Enter each line of the BASIC program carefull y, out and power-up again. You sho uld now be looking
Be especially careful with the DATA statements in at the Rabbit's title screen (Figure I ).
PAGE 70 THE A.N. A.L.O.G. COMPEND IUM VOL. 1
170 8Uf$ {l) =" . " : BUfS (768) =" ' " : SUf$ (2) =
8UFS:? "t\;'Uerifying DATA l.ines." :~ ".R
eadin9 line It;
ISO 8=O:TOTAL=8:LINE="O:RESTORE 1000:
TR AP 250
1'0 LI N E=LI"E~lO
28 9 POSJTION lS. 3: ~ LINE
219 fOR 1 = 1 TO 2S:8=8 +1:READ 8YTE:TOTA
L=10TAL+ 8V TE:8UfSC8 ,8)=C HR$C6VTE): NEXl
I
228 If PEEKCI83)+256*PEEK(13() {)L INE 1
HE N ? ... Line ";LINE;"Missing.":END
230 REt:!D CHECKSIIH:1F CHECKSU H=TOTAL TH
EN 1'8
249 (iOTO 36 9
259 POKE 752,O:lf PEEK(I'S){)6 THEM 36
o
260 ? "' DAT t:! linps verified.":? " .. l nse
rt a blank disk in Drive tH."
270 ? " .. Press ~ to wr i te di S k .~"
Figu re 1 236 IF PEEK C5327if( )6 THE N 780
2'9 POKE 76'),I:POKE 770 L33 : ? " .. for-Matt
The 18x40 dot matrix on the bottom half of the i ng dis k. ":X=U5R(AOR C HL~ )
screen is the Rabbit's "Visible VTOC." Each dot 309 If PEEK C71U OI THEN ? "~ U or.-at e
rror!":? "ReMove write - protec t ta b or"
represents one of the 720 sectors on a standard :? " replace disk.":GOTO 270
ATARI disk. 310 ? ".Writing data.":PO KE 770,37:POK
E 77'),0:8UfFER=ADRCBUF$ )
Put the disk you want to copy into drive # 1 320 FOR SEC10R=1 TO 6
and press the START key. The drive will begin 310 POKE 778,5ECTOR : POkE 773 , I NTC8UfFE
spinning and you will hear the familiar beep~beep~ R'2561:POkE 772,BUfFER - (2S6*PEEKC773))
: H=USR CADRC ML$l)
beep of sectors being read into memory. As each 340 8UfFER=8UFfER+128:NEMT SECTOR
sector is read, the corresponding dot in the Visible 350 .., ",,"Rabbit disk oka!,l . ":END
368'" "Bad dat a itt line (;3";lINE:lI5T l
VTOC will change to a different character: HlE:E ND
o indicates a data sector 37 0 DAT ~ 104,76 , 83,228
3 80 RE M * "'l DCTO
o indicates an empty sector 1990 DATA 0,6,128,4 ,ll 4,(,16',0, 1 68,14
5,'4,32,77,6,165,106,201 . 1,) 2,176,12~ 16
? indicates an unreadable sector. ',158,133,134,16',2582
The Rabbit will beep aga in when his memory 1910 DATA 6,32,131.6,76,157,4,162,0,14
buffer is full. Remove the source d isk, insert a blank 2,198,2,134,12',134.131,142,68,7,232,1
3 4 ,128,134,130,134,5130
copy disk and press START. You r copy disk will be 1820 DATA ',142.1, 3, 134 , 14(,24,165,88,
fo rmatted and the source data will be written out, 105,23',133 , 136.133,138.165.89 ,105.0,1
33,137,133,13,),32,77,7734
one sector at a time. Each written sector will change 1030 DATA 6,16',1' 2,133,13 4 ,1 6',6.3 7. ,t
its corresponding dot in the VTOC to an inverse dot 31,6,2(,165,88,105,122,133,1(0.14(,2,2
30,141,230,136,208,2,10584
character. Note that the Rabbit always uses the wr i te~ 1040 DATA 230 . 13',162.2,160,0,16',14,1
wit h ~ver i fy fu nction of the 810 disk drive. It's slower 45,138,206,1'2,248,208,249 ,2 4, 165 ,138.
185,240,133,138,144 . 2,23 0,1(151
than writing without verify, but more rel iable. 1850 DATA 13'.202,16,231,32 ,1 43,6, 2 4 ,1
The prompt "Insert source disk, press START" 65,136,191,128,1 33.136 ,165, 137 ,101,12'
,133,13',16',226,133,134,16',17380
will re~appear at the end of the first read/write pass. 1868 DA1~ 6,32,131,6,32,'1,6,16',82,14
Repeat the procedure outlined above. At the end of 1,2,3,165,1 78 ,141,10,3,165,12',141,11 ,
3,32,83 , 228.1'370
the final read/wr ite pass, the Rabbit will offer to 1970 DATA 173,3,3.16,4,169.31,108,15 , 1
make another copy. Press START to re~r un the 60,127,177,132, 708,7 , 136,16,24'.16',16
,29 8 ,2, 1 6'.176,133,21'79
Rabbit or press OPTION to boot the copy d isk. 1680 DATA 143,160,0 , 132.77,145 ,13 8,230
Empty and! or unreadable source sectors do not ,138,208,2,23B,ll',230,12B,208,2,130,1
2',165,129.201,2,208,6,2535'
take up any memo ry in the Rabbit's disk buffer. So if 1090 OATA 165,128, 201,20 9,2 40 , 31,165,1
43, 2 81,128, 208, 181 ,2 4,17 3~4,3,105,128,
the source disk has lots of empty or bad sectors, the 1(1,4,3,133,132,173.5,28387
Rabbit may be able to duplicate the whole thing with 1180 DATA 3,105,0,141,5,3,133,133,201,
a Single read/wr ite pass. In any case, it will never take 188 L 288,156,24 L I65.136,191,130,133,138
,16~,137,191.1s1,133,13' ,3 12'6
more than two swaps to copy an entire disk. 0 1110 DATA 16',4,133,134.16',7,12,ll1 , 6
,32 ,'1,6,1'8 , 144,208 , 32.32,66,6,16',33
, 141,2,3,32,33276
1120 D~ T ~ 81,226,173,3,3,201,1,240,14.
L isti n g l. 16',72,133.134,16'.7,32 , 131,6,32 , ' 1.6 ,
2(0,224,32,143,35843
188 REM •••••••••••••••••••••••••••• 1130 DATA 6,16',87,1 4 1,2,3,165 ,13 8,141
119 REM * SL ACK RAB8IT 2.8 MAKER * ,18,3,165,131,141,11,3,160,0,132,77,17
120 RE M
110 REM *
*
BY 8RlAM MORIAR1V
ANALOG COMPENDIUM U.l
•
•
7,138,133,143,281,38312
1140 DATA 128,298,5,12,61,228 , 4B,251,1
140 REM •••••••••••••••••••••••• • ••• 6'.1(2 , 169,9,145,138,230,138,298 ,2,2 39
159 REM ,IJ',238,130,288,2,230,417'6
160 CLR :DIM BUf$(7681 .Ht$(() :fOR 1 = 1 1150 D~T4 131,165,131,191,2, 2 08,6,165,
TO 4:REAO 8V1E:ML$CI) =CHR$CBVTE) : NEXT 138,281 ,7 9',240 ,3 8,165,143,201 ,12 8 ,2 68
I: POKE 752,1 ,1'3,24,173 , 4,l,105,128,450,0
v
VOL . 1 THE A.N.A.L.O .G. COMPENDIUM PAGE 71
DISKTOOL REV.3
32 K D isk
b y Ton y Messina
Disk Too l is designed to work with an ATARI 720 sectors (numbered from O~ 719) on each diskette
400/800/ 1200 with at least 32K of memory and up after it is formatted by the Disk Operating System.
to 4 single·density disk drives. The key is SINGLE Th e sectors arc laid out in what arc known as tracks.
d,ns;ty. PERCOM, RANA, MICRO- There arc 40 tracks per diskette, each containing 18
MAINFRAME and othe r dou.ble density drives can sectors. To clarify the last twO statements, I have my
run D is k Tool, but only in the single·density mode. patented "formatted diskettes are like onions" dog
Sorry, but Dis k Tool was designed and written back and pony show. Next time you cut an onion in half
in the olden days SO (before double density). and (when you make onion rings, mushrooms and
would require a complete overhaul in every aspeC[. onions, etc.), lop off a hunk in the middle abom
Disk Tool hi stor y. 1/ 4 inch wide. Now turn the onion so that the big
My need for a disk utility made its appearance round part faces you. Each individual ring of that
shortly after my disk drive arrived in March, 1981. I onion is exactly similar to a track on the diskette. Go
was plagued with disk link errors and crashed files all ahead, pull off the outer ring. Now, if you cut that
over the place. To put it mildly, "Boy, was I really ring into 18 equal pieces, each piece wou ld repre-
mad!" It was then 1 decided to write a program that sent a sector. The outer ring is track O. As you move
inward, the next ring is track 1 and so forth until you
- would allow me to access any sector on the disk. To
make a long story short, I gOt a copy of the DOS I
source listing and ATARI Tech Manual. I then
reach track 39. Each track would contain 18 sectors.
Track 0 contains sectors o~ 17, track 1 has sectors 18~
35, etc.
locked myself in the den and proceeded to work. 50
gallons of coffee, twO powe r outages and 5 bill ion Now yOll have an idea of how a diskette is organ~
phone calls co ATARI later, I emerged victorious. I ized. Disk Too l is designed to work at the sector
had actually managed to READ and WR ITE to a level. Although there arc 720 sectors on each
disk sector without usi ng the File Management diskette, not all secto rs are available to you, the user.
System (FMS) or Utility Code in OOS 1. Yaaayy!! You 've just formatted a diskette. Ahhh, the feeling
When DOS 2 arrived on the scene, I converted the of power, 720 sectors to Store all of your programs.
Tool. Some letter I had received prompted me to You hit the A OPTION in DOS (jUSt to see that
organize the Tool and publish it as a 2~part article in magic number 719). Upon hitting RETURN, the
A.N.A. L.O.G. Compu t ing. Response to the pro~ number 707 appears when using DOS 2 and 709
gram and the article was outrageous. When A .N . A. ~ appears when using DOS I . What! What happened?
L .a.G. editor Lee Pappas mumbled something Well. it's quite simple, friends. Although there are
about a Compen di um , I saw the opportunity not 720 sectors, only 707 are available for your use with
only to improve the article and documentation, but DOS 2 and 709 secto rs with DOS 1. The other
also the method by which I could include the most sectors arc reserved for use by DOS. The disk dir<~c ~
requested enhancements to the Tool. So here it is, tory stea ls 8 sectors sta rting at sector 361 and
everything you ever wanted to know about disk running to 368. One sector (360) is allocated for the
structures and D isk Tool. And away we go ... VTOC (Volume Table of Contents, pronounced
"Vee~Talk "). The boot portion of FMS also
Disk sec to r stru cture . occupies 3 secto rs (1,2,3) for DOS 2, only 1 sector
The ATARI 810 disk drive, in conjunction with fo r DOS I. That's what happened to your 12 missing
the File Management System (FMS), o rganizes data sectors for DOS 2 and to missing sectors for DOS I ,
on a diskette into blocks called sectors. There are so don't be ahumed.
PAG E 76 THE A.N.A.L.O.G. COM PE NDIUM VOL. 1
With that out of the way, it's time to discuss the Notice (hat the lower two bits of byte 125 and all
different types of sectors. Yes, I know it soundscon~ of byte 126 combined point [0 the next physical
fusing ... after all, isn't a sector a sector? The answer sector of this file . A zero(O) indicates that this is the
is yes. Each sector is capable of holding 128 bytes of last sector of a file.
data. The manner in which the data is structured on a One variation in data sector fo rmat occurs when
sector is dependent on a pa rticula r sector's purpose the Binary Save option is used to save an area of
or type. I like to define sectors as being of 4 types: memory to the d isk. The variation occurs with the
I .) D ata Sec to r : Con ta ining program first 6 bytes of the first sector of the binar y file.
information, text files, etc. Those 6 bytes are commonly referred to as the
2.) Boot Secto r : Containing ML program "binary file header." The header is formatted as per
data. Figure 4 .
3.) Direc to r y Sector: Containing program
names and associated data. Byt., 0
2 3 , 5
4.) VTOC Secto r : Secto r conta ining free LS. MS. LS. MS.
count and disk bit map. FF FF Stan Start Eod Eod
Let's take a look at the differences and similarities addr add. addr add r
of each type of sector.
Figure 4 .
Data sec to rs.
If, for example, you answer the Binary Save Prompt
This is the most common type of sector on your
DOS with "MLPROG,0600,065F," then the first 6
disk. Technically, all the sectors are data sectors. I bytes of the first sector of disk storage for this pro~
use this name only to distinguish its format from
gram would look like Figure 5.
othe r types of sectors.
Whenever you use the commands SAVE Byt.,
0 2 3 , 5
"D:XXX", LIST "D:XXX" or invoke the Binary FF FF 00 06 SF 06
Save option from DOS, the actual programs are
Binary file Start addT End add.
wri tte n to the disk in data sector format. The fo rmat definit ion bytes LS B/ MSB LSM / MSB
is quite simple. Bytes O~ 1 24 contain actual p rogram
Figure 5.
data. Bytes 1 25~ 1 27 contain sector identity da ta or
" link da ta. ,. Figure 1 illustrates th is type of format. Binary program sa ve exa mple.
NOTE: Bits set (+ 1) indicate condition listed. Whenever you turn on your computer, a chec k is
Bit 6 se t indicates the file is in use. made to verify if any ca rtridges are present. If a car~
Bits ca n be combined for multi ple sta tus. tridge is present, the ,. Allow Disk Boot Bit" (Bit 0 of
Example: Bits 1,5 and 6 set would mean file was location $BFFD) is checked. If it is zero (as it would
crea ted by DOS 2. it is locked and in use. be if no cartridge were present) then the RO M boot
Here is a quick refe rence to the possible status routine is in voked. This ro utine goes out to sector 1
values. of the d isk, reads in the data contained the re and
$00= File is never used. interprets it. Byte 1 tell s the system how man y
$O I= File ope n fo r ou tput. secto rs to read. Bytes 2 and 3 tell the system where to
$02=File crea ted by DOS 2 (if bit no t set, load the data , and bytes 4- and 5 te ll the system where
assume DOS 1). to sta rt executing the ML program once it is loaded .
$20=File locked. Boot sectors do not have any link data.
$40=File in use. Consequentl y, each booHYpe secto r ca n contain
$80=Enrr y deleted. 128 bytes of program info rmation. 1 said "can"
How does DOS use the info rmation we ha ve di s~ because the last secto r may be a short secror co n ~
c ussed so far! In simple terms, when you type LOAD raining less than 128 bytes. The FMS for DOS 2
" O:XXX" in BAS IC, the FM S opens the directory contains 3 boot sectors worth of program dara, whil e
fo r input, reads in the directory sectors sta rting at the FM S for DOS I has o nly 1 boot sector.
sector 361 and sea rches for a match. If it finds an VTOC secto r stru c tu re o
en try that matches the program name you asked for, Sector 360 contains the VTOC or Volume Table
FMS extracts the starting sector from bytes 3 and 4 o f Contents. The purpose of the VTOC is to keep
of the entry and also the length from bytes 1 and 2. track of which sectors o n the d isk are o r a re not being
FMS then positions the read/ write head of the disk used .
drive at that secto r, reads in the sec to r, extracts the There are basically two important partS of the
link information {to find the nextse<:tor)andchecks VTOC: the mi scel laneous portion (bytes OA) and
to see if this sector actuall y belongs to the file you the secto r use map (a lso called sector bit map) . Bytes
wanted. If it does, then FMS checks to see if this is 0 -4 are used as follows:
the last sector to load. (Remember, the next sector to
load is in the link bytes.) FMS keeps load ing until the By te O= Use byte (2 fo r DOS 2, I fo r DOS
next sector to load is 0. I ).
If, during this process, the file number of the By tes & 2 = Total II o f sectors (LO/ H I
sector just loaded does not match the o ne you are format).
looking fo r, a file number mismatch erro r (# 164) Bytes 3 & 4= Free sector count (LO/ HI
occurs. This usually means that eithe r the disk link format).
information of the previous sector was incorrect, o r
possibly the link data of the cu rrent sector is The sector use map begi ns at byte $OA and runs to
incorrect . We'll discuss how to fix this later. byte $63. Each bit of each bYH.' represents o ne sectOr
Boo t sec to rs. on the disk. If the bit is ze ro. then tha t sector is being
I use the term " boot sector format" when referr ~ used. If the bit is 1. then that sector is available fo r
ing to files which start at secto r I and run free. Bit 7 of by te $OA represents sector 0, which
contiguo usly to sector X, where secto r X is the does not exist (sec experiment 5 fo r explanation). Bit
ending sector. These files d o no t need any language 6 of byte $OA represents sector 1, etc., all the way
ca rtridges or DOS. They are completely self~ down to bi t 1 of byte $63 which represents secto r
contained programs which load and execute upon 719. Use D isk Tool to exam ine the ma ps of yo ur
powering up the compu ter. Do not con fu se these own d iskettes.
with AUTO R UN.SYS files.
Remember the heade r bytes for bi nary files sa ved Well, that about wraps up our disc ussion on d isk
using the Binary Save Option of DOS? Well, boot data structures. I reali ze I 'w clobbe red you with
sectors have a si milar struct ure. Sector I of the disk man y new concepts and material. The best way to
contains the magic header infor mation wh ich is digest this information is to use the Disk Tool
structured as per Figu re 7. experiments which follow.
Byte 0
2 J , s
Disk Tool srrUCfure.
Yo u may have noticed that Disk Tool consists of 3
o bv iI of LSB MSB LSB MSB programs: an AUT O RUN.SYS creator program, a
[radltion se<:tors Co.d Lood Inil aJdr Ini[ addr
mlnad addr addr
machine language loauer and the actual BAS IC code.
Why 3~ Wdl, the original intent was to make Di sk
Tool fit into a 16K disk system. That was whe n the
f igu re 7. Tool was sma ll. Now it's so huge that it won't all fit,
PAGE 78 TH E A.N.A.L.O.G. COMPENDIUM VOL. 1
u
d isplayed. NEXT SECTOR points to the nextscctor sectors 1~ 720. Some soft ware develope rs have taken
containing data for this file. FILE NUMBER is the advantage of this useful q uirk to p rotect their d isks.
file n umber to which th is sector belongs. T he nex t So don't write to 720 if so mething was there. If all
sector does not have to be the current sec tor numbe r was OK and you did Experime nt #4. hit RETU R N.
+ I (more on this later). Now type Wand hit RETURN again. T he screen
When you're ready to look at t he next sector, you will [Urn red and a verify p rompt will appear. Answe r
can enter the numbe r and hit RETURN. If the next Y to the prompt if you are sure you want to write to
sector happens to be the cu rren t sec tor + I, just h it the disk. When the write is complete, the screen will
RET URN or "+" and RETU R N. If you want to turn green again and we' re back to t he COMMAND
look atthe current sector ~ I, type"~" and RETURN. OR SECTOR NUMBER prompt. Recall sector 720
Trace your file, examining the format of the data, etc. JUSt to check what was written.
Remember Figure 1. Try to look atall typcsoffiles: Experim e nt #6 :
Binary, SAVE files, ASCII files, etc., and compa re Trace File with " T " C ommand .
these with the appropriate figu res. W hen you hit the Now that you've traced a file the hard way (if you
end of a file, you ' ll scc that the next sector pointer didn't do Experirtlent #3, then shame on you), we'll
will equal zero.
do it using the T command. Call up the directory and
Experiment # 4 : pick a file (any file). Note the file number in the F1L#
C hange Byte s with " C" C ommand . column. Hit T and RETURN. Ente r the selected file
Call up sec fOr 720 on the disk. If it is all zeroes number (hex or decimal) and hit RETURN. The
then you can use it. If it isn't, type "." and hit computer should be busily grinding away, spewing
RET URN until a sector is displayed with all zeros. out hexiclecimal numbers along with the filename
At the p rompt COMMAND OR SECTOR and start sector. When done, the word END shou ld
NUMBER, type in C and hit RETURN. The screen appear. This function shows you exacdy which
shou ld change fO yellow and a prompt should sectors on the disk the file you selected occupies.
appea r. Move the curso r (CTRL up, down, left, Trace will scream if it encounters any file number
right, arrow, etc.) to the 1st hex value in byte 00 line. mismatch errors or short file errors. A short file
Replace the 00 values with the following: error means that the length of the file in the direc~
tory does not match the number of sectors traced. If
44 49 53 48 54 4F 4F 4C this happens for every file you trace, then a possible
typing error exists in the ML Loader portion of Di s k
Then hit RETU R N. Ma ke sure you overwrite each Tool.
value of 00 and space between each by te. If you have Expe rim e nt # 7 :
done everything correctly, you should see a "secret Se t Drive N umbe r with "S" Command .
message." This straightforward command was a heavily re~
The C function only changes memory locations. quested addition to Disk Tool. At the COMMAND
Nothing has bee n written to the disk. You can only OR SECTOR NUMBER p rompt, type "S" and hit
change one display line at a rime. RETURN must be RETU R N. The current work ing drive number will
hit afte r your hne changes are satisfactory. If you appear as well as a prompt for the new drive number.
wish to change more data on the sector, simply hit C Drive numbers 1~4 will be accepted and processed:
again, make your change, hit RETURN. etc. anything else will produce a RAZZ and an error
Ex perime nt # 4A: message. If you change to a drive that does not exist,
C h a n ge Bytes (ATASC II m e tho d ) . trying to execute a command will again causc the
Follow the p rocedure in Experiment #4. To infamous RAZZ/ e rror message combination.
change bytes, move the cursor over to the hex para~ Ex pe rime nt #8:
meter to change. Hit the space bar to b lank out the Print Scree n with " P" Command .
fi rst pa rameter of the hex number. Now type the Another straightforward command. If you don't
ATASC il ietter or numbe r you want. Continue with have a printer, you may skip to the next experiment.
the rest of the line, always remembering to precede If you do have a printer, then pick a screen which you
the cha racter you want with a space. Hit return and would like a ha rd copy of and answe r the
check your work. COMMAND OR SECTOR NUMBER pcompt
with a "P" and RETURN. The message PRINTING
E xperiment #5: SCREEN will appear and the screen will be dumped.
Writing to Disk with "W" Command. If you fail to turn on your printer or inte rface, you
As I mentioned previously, writing to the disk can will obtain an erro r message.
be dange rous. Be careful! Sector 720 should be safe. You cannOt print the HELP screen as the dump
Why! Well, there is a bug in DOS. DOS can only routine is only set up todump Graphics O. If you t ry
handle sector numbers from 0 to 719. The disk to dump the HELP screen, you will get an IM~
d rive, however, will only accept commands for PROPER SCREEN COND ITION error message.
PAGE 80 TH E A.N.A. L. O.G. COMP EN DIUM VOL. 1
there fo r reference o nly. This should give you a pointer to the missing sector and write out the sector
pretty good idea of how to reserve some low. using the W command.
end memory, and also how to disable the break This sou nds like an involved process, and in some
key prior to BASIC gaining contro l of rhe extreme cases it may be, but it su re beats retyping the
system. o riginal fi le.
Listing 3 - is the ML loader program for Other uses.
Disk Tool. This program loads in all o f the CHANGING H EADER BYTES ON ML OB-
mach ine language instructio ns needed by the JECT FILES: You have a relocatable ML file which
Disk Tool BASIC program. you assembled on page 6. You now want [Q move it
Listing 4 - (the huge o ne!) is the assembly someplace else. The old procedu re would be to load
language source code for Disk Tool utility. In it, in the assembler, load in the sou rce file, cha nge the
you wi ll find how to put a character on the ori gin of the file, re~assemb le , save the object code.
scree n, how to convert binary numbers CO hex Ba h ~ Humbug to that. With Disk Tool sim ply call up
and hex to binary, how to display messages on the di rectory and find the start of the object file . Call
the screen , how to go crazy tryi ng to read an up th at sector and change the header information as
assembly listi ng and other common routines. I per Figure 4. Re~write the sector and your file will
must say that this code is not the most effi cient. now be loaded at the new add ress.
Things can be done to improve it. so feel free. I The uses for Disk Tool are left to your imagina-
will be glad to answer any questions o r tio n. It's saved me a lot of time by allowing me direct
comme nts abou t it. My address is at the top of access to the disk sec[Qrs and the information on
the listing (please send a SASE if you wri te). them. I've patched ML programs di rectly, added
Listing 5 - is the Disk Tool BASIC code. I code and allocated new sectors fo r that code,
have completely overhauled the code and changed file names that refused to be changed by
commented it like a maniac. The docume nt a~ DOS and recovered many valuable files that were
tion following Listing 5 gives all the addresses, crashed. Let you r imagination run wild. 0
label names and a complete cross~ r efere n ce to
the BASIC code. There is also a memory map
which is valid o nly after Disk Tool has been
loaded. Listing l.
...
I •••
NO.. "UT DUft ' .. 0 HANDLE .. ADOltE" ....
IN TO THIl .V.TIl .. VECTOA LOCA'IO" •••
1818 tAU '"
1'28 REM ••••••••••••••••••
1822 REM. EID AUTOAUI.SV5*
liZ' RE" LOADER PRO'
1126 REM ••••••••••••••••••
* *
..,.:.,.
••••
•• IS
LOA
IT .
LOA
'T.
. L.OUA I AII
V"' ltO
.H .OUAI AO
VN' '''II OI
OIl T .00 .. LD
ITOA~ A, Iv. VEC
Sil T ADO .. " I
.TOIII!: I T 'DO
NON ALLO" I NTE ft U"TI
• • 2' '"
m AND "E TU.N
• ....."
.'3' ,I ........................... .
•• 3 •
..., ,,............................
(See pgs. 7- 10) • • 3.,. DO II C,,!CK ' 0 11 A IIII!:.K •
,. " EY. U ' . II!"''' II " " , ..!
• • 10. I . CAUIE T"1l .vITIl .. TO .IU., •
18 DATA 442,342,782,4,723,347 , 472 , 348, , . I S HOII( I T A"I) '"( .. IIETUII " •
•• '• 7.
'71 , '88 , 388,584,332 , ' . , 762 , 6887
, . DATA 7",325,357,"',116,1'7,'86,5'
...
....••••,,'".,
71
DUll 1 ..11 ~"'" I",IIE "
',6'8,647 , .'1 , 725,587 , '82 ,2 35,7'18
1 •• 6 DATA 54,"7 , 35',628,586,182,885,7
8' , 726,285,881,6312
•
., , .. • ¥. I IIII
.11. ,••• •"'E."
. 1.3
L O. 'ftll.T
• "L T li l A"
.CO
J II" .VI I "'II
T.0 .IIU.I"
KEY HI • ••
.." . T H II "
YES 'T , ., .
"0 10 'ULL A
III~A"'I''I'
.".
.,..
.,:, T 11111"
.IZ.
LD • • • 71' M'''E 1ft" . "
.,;), II'''' UtOI'
LO • • "O" .. 'K
~UT I " IHIfUI
"".K
..'.1.
II!:T "D"EV
• •• !!
\'
•• 7.
....... .......................
.UTOIIU... . . va aOUII.I::1l e(1)1l
'0'" O.I(TOot. UTn.ITV "'Yl
•
• ."..,.. U,
. 3.a
.'13
.T. ' ftOEN
.CO
A.. O STUI'I'
.. ULL A
A.. O ftETURH 1'11011 INTEftU"T
,.............
• .'" TOIO .. "1l.S '''. I · n •••• • • • •• •
"l:5 •• OUOLEv .VI! •
.a.1 I . I!IIO "lIo e •
...
.. 3. IIE"" O"'T . "' 1 . : , .. •
• • 3:5
• • 4.
• THII 'ILIl "'E.E"'VE. , •••
• ."1
.171 ••• , '"! I!:HO
:\ • .VTIl. 0' ft A" IV .. Ov l ... THE •
• • :1. "(" LO "O I "T('" U" .EF O"'E
....,
• • 1Il1
• •6•
• TH£ , •• 'C Olt fta.EIt . LE'" e.ltT •
• .IlT. COII TftOL 0' T ..1l a ... TE .. . .
• • 7. • TH I . eoo£ .LIO OI ••• LIlI THIl.
•• 7:1 ."'Il.K KIlV TO "ftE"Il.. T . .. .. Lis t ing 3 .
••8. , . " O•• IILIl UIllft E",,,,o,,,a ''''0''
"'lI ,. " .....Il.. ' II • •
• ,,,, I
••• , I_ ~~08~A" 'A8~D ON ID~A8
"" ,_ ~A~'~"'lD 1" Dl III ATAAI
11.3 ,_
,............................. .•
~ •• 8·11 • 8-lll
Ill.
1113
1121 .............
, IlIIU. TEI
............... 25
..••
1123 , .
I.
Illl
, ..LOL .,.
."a IIIl IS
.,.1
.,. .I:EII
.,.
• • :t:7 LO .VTIl ..
10'
1l1IL0
" ( " LO"
...
".3 ,VVI " I!"LO
.131 IO.ft"IT
.,. ,••••• ... ftIlT.RT ' L.a
• •••11
5.
..••
" 33 C."'VI[C C.'" . , • • , VEC'O.
.11>1 •• V.vT
." ' • • 1.
.,. • 0' .VTE. TO ftEIIEftvll 55
.17. "OK".K
1'.3
I"'III[N
..,.
." ' O:. 1l
"O"llv ' .. " .SK
Ift ll EN• • LE .IT.
0
,.
• 243
aT"'Ea
1231 OC<
LO. . . 1l.. LOL
CLE.ft '011 .00
'5 DATA 253 .3, 32 , 243 , 2' . 32 , 222,2 ',3 2 .2
1 23 3
I:••
Iz.a
1 27.
.DC aL.I.vIV T
IT. "Il .. LOL
LO" .. 1l .. LO"
.PO 3...
.E T CUftftENT " E .. LO LO . vT
. ' Oftl!
LO
.ET CU", .. EN T .. EIILO " '
•188 DATA 38. 3 2. 1 78. 2 ' ,3 2 ,31,38, 2 98, 1' 2
185 DATA 2 48 , 17 , 232 , 76 ,25. 2' , 1 49 .1 26. 2
'.32
118 DATA 16 , 32.168,8, 1 48 .22, 38.184. ' 6 ,
1<2
115 DATA 2 3. 39 .138,56. 233 . 7 . 1 78. 238. 23
127a • OC ' ",a.V.VT .0 0 3 •• • Nl ,I •
12.1 ITO .. r: IT 128 DATA 1 8' ,25 3, 3, 32 . 1 '5 ,2 ' , 142.12'.2
..
'IT" "' 1l " LO"
.,.2".
.:.a LO • •• • ....." ••• ftT .. E.ET ' ,32
.n, .TA
JIII'I
J ....
. .. Aft ... '
a " A"I! "
CAI'IYEC
. TO.. E
DO .ftI!A~ KI!V ITU" 125 DATA
0,2 98
57. 3 5, 1 74,1 2' . 2' . 232 ,236,23. 3
JU .. " T"ftOU.H C. .. T
.3. 3 138 DATA 23 5,16',155,32 , 57.35 , 1 74.2 3 .3
.311 , .........•..••.•••.•.•.. 8 ,224
.3.3 , . . . . ." '.11 VIlC ftOUT, .. £
• 32' , . TO 'O I IiT TO OU'" 0 ..11 • 135 DATA 1 28 .17 6.28 2 ,32,38 .38, 3 2.6 . 38 •
.32 3 , . ftOUTI II Il . . .Il .. ILL ,.- • 12
• 33. , . IIORE T"t I ftll.K KE".
1 •• DATA 1 75. 2 ' ,1 6 •••• 1 7 •• 23.3 •• 76 .2 5 .
1333 • ••••••••••• • ••••••••••••
.3 • • ,
. 3 . 3 , •• •
13al •
. , l l I ... ,t:" ...
l ilT "UT .VII Iftll I II OUft .TUFF ...
liTO" 1 .. 11'11 '0'" .,.
2>
145 DATA 0,8 , 0 , 0.8,0,0 .1 62 .8, 18'
158 DATA 15 4 , 2' , 248, 13,1. 2 .1 27 , 2'.32,5
.310. coo V"l ftO 8.:1 IVITt: .. 11'0 LO APOft 7 , 35
"loa .VIII IIII _ '
Ill'
.lTa
'"
co,
m
V.. I IIQ. ,
" OO,'V J .. " LO
8£ T 'V'
IRII
" OO,'V J .. " HI
10' AODft
155 DATA 1 74.1 2 7 , 2',232 . 56 ,1 76.2 3 8,'6.
125 , 66
~
~
16. DATA
127
165 DATA
8'.84,6'.35.127,127 ; 72,6' , 88 ,
127,65,8.,65,81,67,73,155,8,3
".
35 31
185
DaTA 31,173,234,11,32.136,31,173.2
DnA 32,136,18,32,175,2',32,41,3',
2 173
~ 17. DATA 178.2',16',32,32,57,35,'6,41. ". DaTA 243,31,32 , 136,38,32,175,2',16
~
15
175 DATO
11
1 •• DATA
128,14'
185 DIHA
,. 211
21.,18,'8,2.115,6,.15,'8,'6,1
32,1" , 2'.211, J2 5 .14' .18,281.
12,711,155,1",18,211,161,1"
...
2 ,2
3>5 DATA 18',237,31,32.74,31,32.57.35.
32
6 216
.is
DATil 31,38.16'.3 2, 157,237,31,2'2.1
15,242
DATA 238,2'3,31,238,2'2,31,16',8,2
~
215 DATA 185,8 , 141. 22.3 8.32 , 243,2',32.
222
22. UTA 2' . '6.8.8.142,121, 2 ',148,128,
"
225 DATA '6 . 114 , 121. 2'.172,128.2'.'6.1
6 ',62
231 • "TA 32 , 51 ,3 5.16'.3fi,32 , S1.3S , '6,1
...
73
435 DAU
43.31
DATA
2'8.758
. . 5 UTA
.5. DATA
241,31.2'8,17.238.241 , 31 .16 .1
162,11 1 16'.32.151.221,31,282,
'6.2.6.741.31,16,63.2' ••••••
••••••• , •• a, •••• 8 ••
••
~
~
...
235 DATA
,171,285
'.2'
DATA
245 DATA
8!;5.t ••
1'4,133.286.114.133,2'5.168.7
32 . 111,3'.17'.24 , 1'5.8.141.12
2'.,28'.7.a,117,2'5,211,32,7'
'55 DATA
•••
13
DATA
'.5 DtIIU
, • • ,3 2,32.32 . 12 . 3 2 . ! , ~.!
32,83,228,16.3,76.52,2' , 32.16
32.76,63.2',173,132.2'.42,42 •
47. DIITA 111 .2'.141.122.4,16,63.2~.171
,122
475 DATA 4.7 2. 41 .3.1 41 ,131.2'.114.14,1
~
7 8 DATA
53 3
171.7'5.788,3,12.111.1'.151 ,2 •••• DATA 141,137,2'.'6 , 113.254.34,2'1.
25~ DATA 23 2, 23fi,12~.2',144.231.12.16, 4.184
~
6, 2' 485 DATA 16,18',32,1'4.184.141.11.3.14
~
~
260 UTA
7
265 UTA
41. 1'8
.7. DAU
13
8.56.233,48,2IJ.J.,14',2,233,
~6 .12, 28',1 71.t '5.32,1'1.38.1
3. , 184,32,1'1 ,18,11,1',1',1'.
275 DATA 1",1','6,76.52.2'.32.741 .2~ .
...•••
1.11'
4,133
UTA
DATA
4 1.31 1 32
500 DATA
1..
35,1'4,141.11.3,141.111.35,18
2'6,114 .131.285,184.114,141,2
81 ,27 8,16.1.16.77J,34,162,11.
32 .05 OIITA 15.177.715.151.27',31,1 3 6,212
~
.10 DATA 72 2,2' .'6, 32,83.228,48.241,16 ,7".247
',253 510 DIIU 117.2'5.141,11 , 3.116 , 177.215 ,
~ 285 lATA 111.215,J6',l.113.2'6,16',5.1 141,1'
62,A .15 tAU
~
". DATA J7 7 .2.5.157,2 21,ll,2'.,232,22
4,11,144
"5 DAU 2. 5,16'.',171.2'S,141.236.31 .
177,2'5
52. DtIITA
.1,76
3.136,177.7'5,141,235,31,136,
141.734,31,J16.171,117.35,24'
~
281.J77 525 DATA 252.3S,171,285.24'.2'.141.236
300 . . U 2.5,141.235,31,2'.,177,2'5,14 31.44
~ 1,21.,JJ SJI DATA 216.31.16,21.12,212.31,1 42 ,12
385 DATA 2'8,177.185,141,213.11.2",17 6.2~
~ 7,785,141 53 • • ATA 32,211.34.71.64,2',16t,34,161
311 tATA 232.31.44 . 211.31.16 , ' .1".'1. 111
~
141 S4I tilT. 12.15'.31.111,243,31 , 17.116.1
315 DATA 211.31,16 , 254.1 •••• ,37 . 16' • • 5 ',76
.141 5'5 DATA 42,11,162,13,16'.212,17.15'.3
~
n • • au 217,31,16',12.44.216.31 .24',S 1,37
,16, 550 DAU 217.11.112,11.11',23'.32,15' ,
~ 325 DAU 42.141,23'.11,J6',7,44.211.11 33,173
,248 555 tAU 11,3,17.47,15.111 , 1' , 1 ,1 2.111
318 .AU .,16' , 5',J41 ,2 3I,31.76.254 , 1' 5.0 tATA 3',16'.16,14.,24',14,16',155,
~
~
, J 6'
33. DAl. 4 ',141,238 , 11,32, 41,31,173,11
12 57
sd tltU 15 , 162.1,142.248.14,12,81.t28
3 ~1O
i •• .ItTA 32,47,35,171,1' . 3,32.136, 3 8,1 71 DAU 1,76.221.34.32,16,12 , 231 , 255 ,
~
2 l4
~
~
..
345 DItU 17' .2 '.162,' , 18'.221,11,32.24
,n
35. tATA 32.57.35.32 ,J l.1 •• 232.22 •••• 1
355 DIIU
30
3 •• DATA
23'.32,24.11.37.11',2'.3t,11.
1",221.31.12.2.,3.,12,57 ,1 5,
'75 tAU 2".3.231,. , 15,173.112.2'.2.5
143
se.
.24'
DAU 11.2.'.15 , 111,121 •• ,11,131,2'
SIS DAU '1.37,1".33.32 , 1,35 , 2'6,248,
34
5 . . tnA 16.211.16',1.1'1,46,15 ,2'6,24
~
32
J'5 DATA
78.2'
".
,113
DAT.
375 tAHi
,43
31,3'.237,22' ,11 , 144,23'.32.J
32.43,3I,113,232,31,12.J36,31
231,31,32,136 . 38,32,178,2'.32
...
',34
50. DAlA
.2'4
,43
tATA
•• 5 DATA
J6,1",141.2S4.34.76.64.2',32
31.162.34.16',2'.32 , 15',13,12
3',113,11,3,32,47,35,173,11.3
~
~
...•••
~
••
d.
• J1 UTA
,255
,15'
173,235,31,77,',35.288,23,1'1
6lS DCIiTA 3.,1.1,',35.162,3.,16',13',32
64. DCIITA 33,16',155,32,57,35,16',1.76,
<7
...
'.1 DATA 16',11,157,66,],16'.' . 157,72.
J
DATA
'10 DATA
01. 'AU
. . I DATA
157.73,3,18.," •••••• , •••
8 ••••• , ,8, , •••••
8 •••••••• ,., •••••••
8, •••••••• 8 ••••••••
v
~
....,....
645 DATA 33,162,34,161,13',32,15',33,1 '25 DaTA ••• • •••••• 8 ••••• 8 ••
73,235 OJ. DATA • ••••••••••••••••• 8 ~
,..
162.34,16'.165.32.15'.33.173. DATA •••••••••••••••• 8 ••
•• 35 DATA • •••••• , •• 8.8 •••••• ~
66. DATA 32.136.3 •• 173.255.34.32,136.3 UTA 8 ••••••••••••••••• 8
8.162 •• 1 DATA
..
a.8 •••• ,8.8.8 •••••• ~
665 DATA 34,16',1'1,32.15',33.16'.8,14 OQTA . , . , . , . , . , ••••• ,8,8
1 255 '18 DATA 8 ••••••••••••••• 8 ••
d'. DQTA 34,141,'.35,76,42.33.113.136. '75 DATA •••• 14.,253.34.173.11.3.141.1 ~
16
675 DATA 141.258,34,113.137,2',141,251 , . . DATA 35.173.1 •• 3.141.115,35.162.35 ~
.34,14' ,Uil
688 DATA 136.2',142.137.2'.32,133,2'.1 ,as DATA 12'.142,5,3.14'.4.3,162,1'4.1
71 25.
685 DATA
137.2'
34,141,136,2'.173.251,34,141, ••
, , . DATA 1.14.,11,3.147,1 •• 3.32,83,228
"5 DATA 16.13.162 ,38, 168.251,32,15'.3
~
~
?IS DATA 35,32,31.3',232.224,11.144,23 8.34
','6 1115 DATA 32.15',33,173,116.35,141,11. ~
718 DATA 78.73.76,6',58.32,0.32,32.32 3171
715 DATA 32,32,83 , 84.65.82,84.32,83,6' I b l DATA 115,35,141,18,3.32.83,228,16
72. DATA 67,84,7',82,58 .3 6,8,32.73,83 ,1' ~
,..
138 DATA
~J2
J' DATA
DATA
DATA
7 •• DATA
5
25 i .23.155,8, 55.78.73.76.6'
78,85,77.66,6'.82 .3 2,77.73.83
77.65.84.67.72.32.65,84.32,83
6'.67.84.7'.82.27,31.8,155.67
72.6'.67,75.32.8',82,6',86.73
6',1'
1838 DATA
.238
1135 DATA
2,2'
1848 DATA
32,15'.33,76.221,34,32,16.32
255,34,288.3,238,8.35,173.13
285,243.31.288,27.173 , 123,4.
~
.J ,J2
7 •• DATA 8 67 65 78 78 " 84.32 82 6' 1858 DATA 212.31.162.38.168.68,32,15'. ~
n.
7..
DATA
DATA
73.76,6'1 77 ,31.36,253,.,32,6'
78.68.', 55 , 7'.87.73.11,73,78
65.76.32.83.6,,67,84.7,,82 32
10
1865 DATA
.162
3,37,136,38,16'.155,32,57,35
~
•••
•••
DATA
DATA
67.7',85,78.84,77,31,36,'. 1 55
65,67.84.85.65.76.32,83.6'.67
1878 DATA
33.162
33.16.,232.32,15',33,32,712 •
~
.18 DATA 84.7',82,83,32,76,7'.65.68.6' 1875 DATA 38,168,88,37.15',33.37,784,3
81' DlAT6 68,27.31,36,.,155.83.72.7',87 1 24. v
'2' DATA 84,37,7 •• 73,7636'537,6'687.87 I h . DATA 284.37.217,33,32,284,31.162,
• 2. DATA 7'.82,33,33.75 .1 5,8,1 2.34 • 38.168
1 •• ~
n.
J2
OAT6 3.32,15'.33.'6.167,34.161,87,
1185 DIiTA
34.31
1"8 DATa
88.32.15',33.76.'83.33,173.2
77.255,34,2'8,732,173.235.31 v
OJ. D6TA 15'.33,173.11.3,32,47.35.173. 18'5
...•••
77 ,8
18 DATA 35.788.274.141,255,34.141,',
•••
7.
DATA 3,32,136.38,16'.155,32,57.35,
DATA 42.33, •••••••••••••••
35.162
1181 DATA 38,168,114.32,15'.33,173,118
~
~
.15,141
DATA .,37,24,3',173.4'.35,748,6.37 11.5 DATA 1',3.173,11',35.141.11,3,32. ~
DAT6 '3.38,76,28,35,16'.77,32,57.3 .J
•
•••
131
DATA 16'.31,32.57,35,37,43.38,173,
111. DATA 228,16,13.167.3',168,38.32,1
".33 ~
•••
J.
.7'
DATA 2'.32.47.35,173,123.4.32,136 •
DATA 16'.',141,46,35.'6,1,32,243,2
IUS DATA 32,2'4,31,76,42,33.168,',113
.128
1128 DATA 35.281,2.2'8,4,16',66,7'8.2.
~
•,J2
.7. DATA 32.231.2','6.6',58,155,162.64
1.'
1175 DATA 64,145,215.16',87.141.2,3.32
,.J
'-'
~
~
IUS DATA 3',161,62,12,15',33,173.11,3
,J2
JUO DQTa '7,35,173,11,3,32,136.31,162
.,
1155 D4HA 82,73,84,6',33,33,253,155,',
1368 DtIIHIl 8Z,82,7',82,32.73,78,32,86,8
.,
•
,J>
~
IUS DATA 161,86,37,15',33,76,42,33,12 136S DATA 7',67,32,82,6',65,68,32,33,3
,218 3
~ 1158 DATa 37,162,38,168,152,32,15'.33, 137. DATA 253,155.',7',73,76,",32.82,
162 38
~ 1156: DATA 161,17',32,15',33,173,115,35 1375 DATA 65,68,32,6'.82,87,7',82,33,2
,141,18 53
~
1168 DIllTA 3 , 173,116,35,141,11,3,32,83, 1388 DATA 15S •• ,68,73,82,".67,84,7'.8
228 2
1165 DAHl 16,11,162,3',161,1',32,15',3 1385 DATA 8',32,82,6',65,68,32,6',82,8
~
1,12 2
~
1178 DAHl 284,31.76.221,34,32,234,37,3
2,16 .,13'. DATA 7',87,33,253,155,',68,73,82,
--
~
1185 DATa 5,3,148,4,3,162,11',168,1,1' 1485 DATA 253,155,8,8,0,'"
2
lU8 DATA
11'5 DATA
21,37
18,3,1'1,11,3,16',81,1'1,2,3
12,83,228,16,13,162,38,168,1 •
1288 DATA 15',33,32,218,37,76,'2,33,32
~
,218 C HECKSU M DATA
1285 DATa 37,32,212,33,162,38,168,28',
32,15' (See pgs. 7-10)
~
1218 DaTa 33,32,28',31,1'2,117,35.16.6
',2' 18 DATA 681,85',511,113,888,415,858.35
~
IUS DATa 162,3,168,253 , 1'2,5,3,148,', 8,1",51',564,841,'83,755,385,8866
3 85 DATa 181,261,26',536.556,358,31',58
1228 DATA 162,82,1'2,2 ,3, '6,16',8,168, 8,885,8'2,531,587,433,588,758,7815
3 161 DATA .8'.3"i537;5.8,888;6",367,4
~
1225 DATA 18,11,3,111,II,J,186,136,288 ",23,62',624,35 ,58 , ' . ,68 ,88 8
,246 235 DATA 128.561,8'5.578,617,261,617,'
-
~
1238 DATA
',8 ,56
1235 DATtI
85,11
168.5,116,136,288,252,168,16
116,136,16,252,12,173,18,3.1
32,564,8'8,576,1",882,",'38,8208
318 DATA 357,618,685,687,626,532 321,3
' I 571 51' 4'3,851 688,415,841,8 j .6
385 DAtA 371,485,528,8",677,652,617.6
1248 DATA 168,18',8' , 128,35,153,128,35 .',278 533 853,8'4,22',256,637,8378
~ ,286.121 .6. DAtA 16',5'1,51',2'4,8",885,873,1
IUS DATA 35,113.123,35,781,255,288,1, 86,37,,157,678,'88,831,6'4,56'1 8582
~
286,114 53S DATA 588,615,688,668,62,81 ,.36,51
1758 DATA 35,'6,121,88,65,83,83,",37,
-
3 621,5'7 5",682 6'5,31',113,8821
.5 61. DATA 5'2,'1',577,6'8,578,61',573,7
J25S DaTa 32,67,72,6',67.15,73,78.11,3 22,5'5,686,865.8'3,617,8'8,718,"12
2 685 DATa 7'4,741,285,"7,611,311,21',3
~
1268 DATil 78,73,76,6',32,67,7',78,68,1 45,283,46',285,248,246,263,2'8,5827
3 768 DATA 671,264,2",38',251,231,264,2
~ 1165 DAHl 84,73,7',78,155,8,32 , 73,83,3 8'.238,275 , 28',211,232,478,581,48'7
2
~
,
1218 DATA 78.7'.8'.32,68,6'.16.6',8'.6
1275 DATA 68,11.33.155.253.8 •••• 32.61.
835 DATA S24i5'6i3J6~"7383!3'6~5'8,34
1,466,.88,64 ,63 ,64 ,2 1,'6.7'8
'18 DATA 254,25',257,262.268,265,263,2
~
68.266.271,26'.2 7 '.272.5".633,'622
.5
~ ,
128a DaU 78.78,7' , 84,32,66.6',32,82,6
1285 DAU 67,7',86,6',82,6',68.33,33,2
'85 DATA 535,68,63',5'5,641,52',141.38
4,155 53"537.588,.18,7,,,518,81'1
1868 6ATA 435 ,5' 3 ,5 ".78',581,882,81',
6885848t468!7'78489~322!368,77,,'25'
~ 53 113 DA A 3 2,3 8,5 7,6 1 ,8 '4,187,5'6,
12'0 DaTA 155.8.78,73,76,6',32 , 73,78,8 511,335.835,214,15,816 57 •• 63,,1416
~
•12'5 DUA 1218 DATA 521.1".1". 530.6'8.111.'2.8
-
65,61,84,155,127,88,65,83,8 3 38,'78.327,33',383.356 , 485,33' , 6'12
, 5. 1285 DATA 5",383,432,322,381,14',36' ,
1388 DaTA 32,'5.32,82.6'.67,1',86,6',8 316,353t1"t2'2i354~583,327i55e,5718
2 136 DA A 1 '.3 1.' 1.5 .,3 6,346.518,
~
1385 DATA 71.78 ,7 1 .32 ,7'.73.76,6'.155. 373.183,82,3653
~
•
1318 DATA 68,73,82,6',67.84.7',82.8'.3
2 •
,
1115 DUA 6'.78,84,82.8'.32,68.1'.78,6
1328 DATA 155,',82,6',65,76,76,7',67,6
~
5
1325 DATa 8.,73.78.71,32.68,6'.76,6',8
•
- 1338 DAllI 6',68,32,83.6',67.84,7',82,8
,
3
-
IllS DATA 155.'.32.72,65,81,32,66,6',6
~
,
134' DATA 78,32,82.6'.67,7'.86,6',82,6
IUS DATA 68,33,253.155,8,6',82,82,7',
82
~ 1350 OATA 32.71.78,32,86,84,7' , 67,32,8
7
~
) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
••
•••
.... .. .,• :
~
; ~ I 8
.J
o I '" "u
• ....
• ,• I .• " o
•0 _
•
-:
••
- o
....
~
~ .....
••••
·
•• '1:,",&::1 o •
i arc ....... "' ..... 0
!! t
.-.. .. i• "
.-
Co- ...... .. .01;10-
> ~ •• •• ••
-.. ,.. ....... '" .. ..-
21' ... • • -10: o•
·... ......
L ....... .. aI "' ..
.. '" z w .. > I !··\ I' 0.. ... .. ::1 ~. 10: . . . . . . . . . . . . 1' .. .~"
!•
o. c.~u ~uzu
1: ..... 1 '\
... ""';I C •• •• • • ••
.. >~~~~=!i~!!
.... zuu
_Z .............
'0 .... • ..
.... > •
:N.i .. ...
.. z
.-.-•• ~;>. .... ...
cuu~n~
... CI
..... -a::l"'X·:>·"
z . ......... .. . -
_l .
• 0
!. u"'~ ~"'c
.. .. ..
0"
•e0 •••
~
i3J!
0
u e ••" ..
I' c.
CC ••
I:
......
d~i~:I
I:
... . .... :. t. :. :.t!
.. ~I~i~ . . ~I~I~3;
'" .......
~=:;=::ro_
.. ... . c ...... '"
c ....
~!t •
••
:;~~U~ ..
......~ .... ~U
0"'00 ..
_w ..... u ..
.L_ • • • UCC~Z • • UC.L;I .H.C
•o
••
-•
•
....
. ••"
"
- .. .. , "
........ •••
z ! ..
•
• •• •
• •
•
..-- u. :: : .=.. U .... U, .. : .... •~ :
.":r
"
00
••
5. , ..... .-
~ ~ .... I .. ~ .. ••
•• o
. ...... Ir : j
I: .... ..
•o .. !;liai 1:1- ZC _ ... .. . . . . . 1: ..
,;~ •• ! • •' "rO!O"
..
".ouuu ............. e u _ ~g!!;
•
• •• !::I;I
"0
ZUUULU
.........
_01 .. :1 e
__
:1: . . . .
.. ....
_ .... e_
0. ..
:1:."" .. :;0 • •
COl.
.. 11
•• • •. • ••
~.
oc
.... .. ••••-,"
e-
... .,C::II<
.1:"' .... •
•• ............... " . . '.' u::
··r • •• ir
.. ce..·c .... " . . ..
o
~
.~-
.0>
:i::'~i:~.U
••-.
~i IU::U::: _. . .......... .
C_::1 ::I"
. " , , , .... 10:
••
••>
cccc,,'"
0_
·....
. . . . . . . 00 ••• U:-~~!! l..,;..,1I:u~..,~u;u
!ll"" u lUll! l::::': n:~:;:=
~~~W:~~I=:;;~~~:::~:::~:l
Ii
.....
ii .. ... 1 •••
• . . . 0 ........... ",.
........ _-'~ .. ~-'_u.-'~-'u.~~~-'-'~ .... ....... • z. ............ _ ... 1' . ., ........... 1' •.
- .. .. .,1'
"z
:>
-,. •••
• :!
, . . •
i
~i1
· • n ::
.... .:1 •
• c. •• aco.• -> I
~:- I
.... •• I· "- Ii o •
o
UJ
a.
~
• •
1a' : :_u:
i...................................................................
i
•
:1:
0 ,.0
i.. :: • I
~
..
• a:»C-'L-' • • • • • •
_~~!_~::~l~~_!!!_!!_r;
i.~£ g: •
"''''uc .. ~ • •• • • .;
.... ::
00
0< :: ••
~ i'
. ..
..
o
_.- I...
i
.
•" -:::.:1
~
.~_:!_D
~ • "_
o
•• c<.1~
.. r_ ____
•
0
o
u" ........,•••••........•••........................•.••••• """"""""""""""""""""1""""""""""""""""""""""
NNNNNNNN~NNNNNN~~NNNNNNNNNNNN
""nnn •••••
• • • • • _____ NNNNN""""" • • • • • •••• c •••••••••• - ~!!~~~~~~~~~~:~::I~~·~IS=::S~~~~~I:::I:~::::::::~~!!~~~~~~~~ ~~~~~
.. NNNNNNNNNNNNNNNNNNNN""""""
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• •••••••••••••••••
'o" ! r• •• i••. ,
-' Ir" --.
..
•
-I • • • • ,, : ~ i
• II
•• ••
o. •
, " "I
::"':, ~.
«
Ii ... .,
1-.. . . ·-. o..
.. cc .:;: :I 00 •
.--..
1 ! ·-"1""1
~":.~:::~l::: • ::1
••> .- . .
.- .. .~ ~!i;
iO "
C ""
Il " .. •• . . 1·
il:~!J~ .. ~;: ..,
............. ; =1'llr,=I" :: !I:::=d:
" ...... "' •• c 001: 0"
UJ •• > ....
Bn::
II:
~:;_!_C:'~·"N ,.,-I .. f
I
>- .,.
•• ::;8 ..
, ---- . : ---------1
.. _c_c
c.u"u",."
.....
...
...
c ... cz._o
c_CuCu ..........
'
0"
.~:=il 1!l:fUf ..
"CI"
:; ul :;
..... -
r.;~u
•· ...
"It :
... - : :
•• •
:: I
••••• 0
•• 5ec::J0::~
••
: •••••••• :
• •
• I
" ••
,.
-.•• !
•
~~::
• 0 •••••
... I :• ,
.1' . . .... _
-
l.
I "-.
....:
_.. :f
z ... .. i:.::::~
C)«I O · .. .. ; • .. c_ ~ • • I
c
:.:; ·
-:
• "' .
..
............
:;: ~ ;::~t;
: .. :
:ea:i~':::
:
i • _::I. >....: ...:::: N. .N.. ..
• • • •• • • •• •
=::
~
• 0 .C.. •"
.. ••-.
.-. - I -I·'
" -I • •• - •
C~.,~~I.:
. . . 11:1 w.
1I:=:i .. ;:; .. o
•
:~:f"~f!
•
-~
..... . ....
:!::n .. e 1 ?~
..........
..u .... .... •0::1" ..
C _ >::I
'!"
..
....
.........
....•• •• !i!I!!~!!: ::;:Ulunll;a
....-.-
..-.-.-
. .-.-.-
. .-.-
. .... ---
.. .............. _ul ... a:
0........
·• ••
• ••
• ••• 0 .. ..
-:II
::1 ••.. - .
1' .. ::1 '" .. .
. f!UHf •
.. I' > >C ..
........ 1' •
• ~.•
: I:
... .. .. "' ..................... 0
! a: ·•••--.. 'j •
........ ,.,::1 ,., • • • 0 I: •• • 0 .... .... >
o·.o .. uco ... ,.... • .... 00. ",,,,r •• /_ -.
:"'::I.;;~:J.
... ... • ....
•• • .". 0 .... "' _ _ .. . •
I •.••.•... : :i:
...... .. z. .. !. !:"
."
".t':. • ••• •••
0 oCo
I
u ... " .. ,., :! :•
uo ... o ... .
. . . . ....
:!:~.;
·....... •. i N_______________
:i=U. • o.
•
:l: •
.......... _ u~:.
••• ,._
"ur"." ...... ..
;
.. "',.,1'....... ... •
:• ·•• •• •
• ..• ..
.....
I •• I
.. ::10 .",._N •
•" ·-.
• .".oc
0
•
.....
cuo"" . . . I I o • co-
•• e.
•
-----.
8 .... "'1,,----
: •••••••• : :.: l;cc .. ~:i:~·ii~ ___________: _
t :.: •••••••••• • • • 1'''
UJ
• ••••••••••••••••••••••••••••••••••••••••••••••••••••
-~::~-!:
VOl. THE A.N.A.L.O.G. COMPENDIUM PAGE 87
..
••••
••••
••••
,.
, •••
, ,...
1)f''04'E
U~D6TE
lOIlOIt
•••
III!:T LO IInl!:
. 73.
"32
. 7 l . CICOOII
.73.
LOA
II''''
LOA
.It
S ·.
"ILIITA~'
SIKI'''IIIC
.. IL.TA
VI!II. LOAO ' . '
IITU"
001 ".'IC
00.21
..
'.'2
,.,ol
,.,,...
••••
.4.2
'"
...".'"...
'" ••••
'" C:OOOV'UtT LO_!)II
01!1~L"
CLEAII C.. II"'V
"'00 II
IITOII!!: ... AV
CO""lllT IT
AOIO OI'''L'''T
THE .. II!!:lU~OI
• 73.
.7 ••
.7.2
..
.7 ••
.7 ••
.7.11
1"0 00. .
LOA ,. '2
liT .... 11. .TA.2
.1 .... OU'''L
LOA s "
IITA "ILIIIA_2
...
,!,
100 DO.'
ITU ..
AHO OUT
LOAO ,
LOAO 2
.... 0 IITU ..
..
•••• LO"DJI • VTI!: COU .. , LO ,~ , . . . . . ILl! "OIl"AT'EO •• OU"" I'
, ••• HI.'Oft
." .... TE COU"T "I • 7!12
•.75
'5.•
OUT .. IL .11111 JUII"EI .. UT U,", II •
..
' •• 11
"U'IEC .1'" 01Kl .. ( o " .. LAY 1.0 NT'LI!
,.",
.,.. ••••
•4.,.. '."'E I . .. IIEII' II 'E.' .'5'
.7 ••
LOA OIlOU 01l1C .EC LO
, ••• o ""LA...
."..,."...
I... 5UllItOUT'Ht: .11111 OO.OTII
...
'.112 JII~ II"'"IV IIAvr: 10.·.
••••" ~EII.V '"
co.
,,. .7Tl
JII~ "U1CHII
.11111 II!!:IIIT
"u' 011 .CII..
"'(I'Ollr If'
'••••
."11
.....
'."2
'" >• ...••• • 7'4
.'?I
C ... 'II
.CC OIIl .... L
OOHf NMr ?
" O.IIIT PKI
..,.,....,.......
, . . . . . . . E"'I • • VTE. H'TH
'" ,
,... "'1I1'10UT I"E .TI. .11111 •• VIT IIAV1! I.T
."2
...
JII~ ''''''CE' I II""'C(
'.'11 "~E"'n ••>
"UTCHII
LO.D • CA~AT
OI ... LAT IT
• 7"
.7 ••
....... l ....
LOA IIIMIIU .. , I
11 . . ... 011. '.V
.1!' ErtEIII,IO"
.,..
"112
...
...
LO .D "EO O!!:IITOH.TO~
OIIl"L.V IT
~ITU~OI
.71111
.7"
.7.2
.7 ••
.7 • •
.7.,
...
.11111 II"'''OT
.11111 "UTCH~
.11111 II!!: II '"
C~X .1 1
'CC OCHE:n
.~vr I!"
OIIl .. LA ...
AEI70111
INC cou.n
1I0T "XltHIIOIII'
100 •• lET "'LL
1I:l'. C"OII1I1V "LA "ULL 0 .. ., • "MI .... 1I5ED .11 •• JII~ II""'C( I 'UT Of' I"
"16
•"e ."
IITA . .. . IIE •• '
.. ULL 0., . . .n .. O~
5TUf'1I I'
••• 2
.11 ••
JIIII JU'HIH
LOA IITIIII1!C
AIIIO •
LOAD ' I~IIT
"211
" 'U
."
." ."""1"11
"I!:IT '~
IITOf''' IT
••••
.11••
"UTIITA J!l1I OO.OTH
LOll ' TAIIEC_,
TO H1! '
.TAIIT LO
......"
. :12. IOIOEO CO. .AII JOA OOIlOTH OIIiPL"'V
'" "
a Kllo ~ .
.526 ' .... II".'. Y HIHIU .1117 JII~ '''ACl' IIICI .. 3
11"211 m ""'ICIIIII Itf.:. AIICI
s .. ,,(
TO IIIH IIVI" '''4 .11111 JUtlHEI
LO .. 'ILrlO
.. UT Uf' •
FILr LE" HI
"311
'" II ""~T
......
I"Dln
.537 JII~ OO.OT .. OI'''L'''V
"" ".XIT COUNT
..,,.,..
.53. AOC •• 11 flEl .112. LOA "IL1!"_' . ILE LEN La
'53110
.5::S11 ,,
IlTA CHile", !lTO~( .1122
""4
.1'" OOIOTH
JIll I""'CE?
O""LIIV
IICI" l
"42 , 11K, .. TO
'uT UU:.IIL IITTE
.112.
.112'
.11111 JUIIHl'.
LOA .. IIIIU"11
..UT Uf' S
" ILE OIUHII!"
,..
.,." LOA '''AilE.', V HI CH.~ .113. JIIII OO.OT" OIIl"LIIIY
.".
"4.
..".
"'2
C II" .1 ..
INI!: "OTAIIC
•'"••
,""'.E.,. T
, . IT II""'C"">
MO •• HE'
V"' •• II!!:' CH.II
'"
.......,..
•• 32
.113.
.11111 ... ACE 2
LOr 12
...
LO. '''AII1!''. T
,.,
ST ~ OI.H.U ....
IIICI .. 2
COlT 2
liE' CHM
IITU ....
."..'.2"".... .",..
IITU"'IT AHO IITOIIE OIIlECTLV •• 7. IIIIC THE
WOT"'K m ""'IC •• II H!!:I AIICII '0 1101 IITTI •• n COUHT1!1I1I
IITU", I 1 C .'_ .• .,u.... '" .U.... E~
•• 7. C~I ." OO .. E "UH ""'10""
..,
. ,.. 11 •• 7. 'CC II~TH." !'to. IIrT "O~"
'.7'
...
LOV ••
C ... C.... COI'
lee 'U2.1Io.
OOH( II IIV1!!:1I
1I0.II1!T .. n ..11. LOA '''Ae1!'' . Y '"
I11!T I T.TUI .... TE
'.'2 ITA "IL.T'" . TOIIE
,..
II'.. "" ..... IIH "011 ( I t t
".8
.,.,.,
':In , ... AIICI
.1 .... "E II.IIE
.011 ,
HE. TO '1" •••
.. UT IW .." . ICII(""
LO "N VIIL IITOIIE
'.11<
•• 11. HT L l'H
'.111
••••
L OA '''AOE''. V
,TA .. ILE""
NEll ITU:
LI!. L O
IITOIIE
....."'....., , ,..
• 57.
.5.,. .. "" IIUII~OUTI"E
•••
...
"711
m.
m,,
"11. .,
IIU""ACT
II.CII •
A(I'?
T1!1I .111 ..
...,..
·••• 2
••• 4
,.
'''4.
.7.2
LOA '''A8EII. V
.TA "IL1!1II
..
LOA ,""'."11, V
,
IITA I T"'a1!C"
L(. HI
.'Olll!
11!T "I
,,~
II T"~T
...,...,.,.",.,,,......... ................................
EL.E IIU. 7 _ "
"1111 Il100 ~E'UII" I'.'
.7 ••
L OA ''''''IIE ' ' ,V
liT.. IIT •• EC
.TA~T
efl.'"
HI
........,
2 AIICII Ioun OIIlITII
I . CON\lE~T
TO . . . I .... ~V • • THE HI OlelT
"
I ' CIItIE. U' TOIl '" .. VIIl[ LO
I · DIBIT I . lll~ACTEO "'1'I1ItI THE
I . ""'811: • "T~ • V liE •• 1I0UTINIE •
•
r.. .
.71 •
,712
."
..3.
'71.
"III
."L CICUII1!O
LOA S 'O
liT. "ILIITA~I
.ve
.1 .... OUtt'L
OU'''''L
NO. e o: ... UII1!O
OI!LrTEO LO.O '0'
IITU"
THEH OUI
I .. 11101 U'1!O. OUT
.....
•• 1111
..
II .. , . I . EUTII "ITH .111 IIUtI.1I:1I I .. '"
•.......................•..•.•••
,..,
•
.lllI
••••
LOA " IL.T._,.,
JIll IIAVIV
.1.11 ~UTCHII
,",UT "" IITATUII
''''VI I.V
.. UT "" IIIICII
II.'....
.... ::1'
II."~ HI H1!. 01.11 ".2
.1.4 J.II Ill .....
LOA .SP'
1t(ITOilE UT
LOAD IIP'AC1!
" '"
m
..... II!!:. ' . v
.. nllOl
IIET LO HE. 01 11
CO"V~~T
••••
".11
II'. "'LITA_',O
M.
eLEAII THill aT"'TUtI
O'C~1!"E.T COUNT
••• 11
.,u., no 1"01" IIl0111! '.5. • .. L .. UTLTII "'A.. C.. TILL OOHl!!
• • 22
• • 2.
eu.
IIU.
... ::s.
...,.,'" ,,,
."
'"
'"
,
'" tE""
.112.,01
,."".
IIET ."Co: HI
CONV1!IIT
.HI .. T
"52
• • 54
.85.
..'1
••••
.11.7
".4
INC
INe
LOA
C"'"
'1'0
LOA
"IIIIUH'
'EC"'"
••
IrC"Al
.. UIIEC
.... 81!!.
I .. C "LII: _III:~
AHO "'ILEllfIlIl:CTOil CIIIT
CLE ... OLO .. ILE ITE,,'
DO"I! • 'ILEII">
T('_'II:T 1II!:IT II!!:CTOII
ELliE INC '1JI'''1I:~ P'OIIllTl'lI
.•3.
"·32
•• ::Sol
.....
'.3. '"
, ••• OIIl"CTOIIV 00. . . . . T.IITII HEll"
J"O"T
OOIOT..
J,... OEII"
.11111 co .. vr:'"
...
all
lI~lU~H
IN 1..0 InE
IIIITH 11101 , ....
Lo .. e .flANCH
COlO ".L I" A TO .. E.
••••
"' ••7.11
•• 72
'"
"'DC
liT .
ICC
INC
III"
... _.
NOH.IIV
''''''.!'.I
10 T ... l 011
'KIP' ' " .... 7EII
.TOIIE "E" "OIHTEII LON
JU .... I" NO CAIIIIT
E.L,r IMC HI 'A1'I7 0 .. '01101
••• 2
""OIll"LV lIMO OIIl"LAV ..'4 LOA S CII L.O.O IIITUIII ..
1111••
,"./> • ", .87.
.171
.1'"
JIlII
"UTCH~
CLIIM."
~ "
CLlAII NAME 'U#'EII
. " . , IIlO III .11111 OIlIC""C IIEAO IEC'OIl .11 •• J .. , "'LOO" • •fT lin ""Lr 1..,.0
,.:1. 11"1 J .. OIIT JU" .. LO"" 0" 1!1I1I0II .1112 L OA 'CII rllCUTI A
.,,~n
•":14
LO• • L,C.IIIIU"
liT • •".II!!: •
LO IIlM" IIT.IIT
IITU .. ",
••••
••••
.11111 "UTC"~
LO .. OAU.'
LI_ .. 1:10
INC 0.0: IDC.
••••
'.511
•• ,e
•••• " ' LO_
.""2
LO" IIH.C.IIIIU ..
inA ."II.!!:._'
LOT .5
LOX ••
HI IIT.~T
ITUI"
NII"I! II'"~T
..., .. I"IIEI
...."
.11"
.11 ...
'"
Aot III
IT~ DAUX'
ICC OIOWLI"
TO 11""0 TH" ..el'
'I!CTOII
THI• • TOII'
I .. c: HI
, .. " .. 1_" MOW 81E' lilLIE N""f ••• •••• IIIIC II .. U. 2 I ' II€IOI:O
PAGE 88 THE A.N .A.L.O .G. COMPENDIUM VOL. 1
......"....
" .n
l lU . ,
.IC""
CLEM "LE C,"l 11.4
I I ••
.IT "l.TII
.IOL IT IUIO ", .. IT.
' I l l OI!! LI!!TItO??
.,..
"110"
1"'2 lO#l ' " . l l _ I [ 2 II!!CTOJt.? "1>11 J •• 0'111 ... Yl. ..... ". IOAIII!!
..... ClllII"l"
"1' IIIC TOI'LI liD ••• IET "!I"
' l l CLI!!"" U!' OUII "Ct
ItI!lt " .. IE T'"
'1 '1"
111'
. , . IE"""LII
J •• OlllflE
HOff: IE"'"OII
"1,1 1' Oll "S'
J"I" 1110111 "liD 00 II:I!!"O IOI!I' .EC10. Il l' • J .... 1E"'2o , ""0 IC"'"'"
' ''1' I·····················
"1 2 I. Cll.1I IIMI .IW"III •
Il l"
In.
"'111' LOI ' ''',110"11' IOlia "DO'"
,'14 I. .".IIac.lTI"1 • III.
l01 ' l. IOO" "
Jill I'llPll O'I"l"" ... .
"' ''1'
I · ••••• • • ••• • •• • ••• •••
"" I'"'"IHI' " 1 1.11: HIM'I'"
...
lO"
.,,.
.,n
1'CllI..... lO • • 11
l .... . ...
I I C",,"Iit"CtlElI:'
0111[ I"CI[
II ••
.1.,
"'1>
~'" OO.O fH
J .... COII " l:r
OI'I"lll'
CO""OH I"'"OJI lil l .
CLII.... '" "'101 .,,,,, Cll"lI: IT , •••• "'Ll "liD .,,' UP "."'IE I:'C ••••
"2'
"2' INI! CllI.".
011 E ..... II:" .. ' ... ·,
T I LL _ II ••
11.2 "'U.O L'. ''''.''''_
lOY ' l,N"_
""11
HI'LO
liDO.
"1'
" 3 ' ,.................
'" . THllO II:rtUIIII II • •
II ••
Jill ' l l ' l I 01111\.",
"32 OIIlICTOII, OUIO" •
I .
II.' J.II 011""10
''','lI:c .. l . ""0 UP IO""I!:
..,,'
..,......,.. ,,..................
1. 01
"3. I. lilT' HIIII 12 •• lO' ' L,'II:C "1I 11
.00'"
" 3'
"3'
I •••••••••• • • • ••••• ' 2. 2 J ... I'LI.IT "ll" 10.11 11
, ClllOUfO or.c T " 'l l
JII" IIIT2
CLl .. II: TOO.LE lIC .. T IO,"
"liD ,,,,I!!,, JIlflIO •• ell Ta ."
11 ••
'21'
12 ••
LOllI 0""12
J.II 000 ..1;
'1[1 '~Ul 'T"II' 'IECIOII:
Oi l . Hli •
LO" D.... U OI!!l' LO
I. OIIlICTOII' O.T • • Ill . JI" oo.Ohl 0 111.1... .. TOO
................. .
•••• IO'''IUP' I U2 It'"
"., lOV . ,. 00 17 LIIOll
..."...,...
I.~ ' .T •• IC
.,,~
~.
• O. II
I"ILllI
"'L""
.0' ,
.0' 2
• IT l2 31 l2 31 32 ,
. . . ILIE IO""'IE .~
, "''''''1' .IEC " " LO
, "'lIE LIII HIILO
121.
12'. 0011 1[' "
1111
In.
. , ..
lO ..
Jill
lGo
'CII'
. CII
' ' ' ' CHII:
I,
.IIVIE CII'
c .,,'" "'1['
Ola'lll~
II III!!C.OJtIl/L lll lt
..n.,..
.. ILl: "''''''" un II ~ ICII' 111111£ Il
,O"LI • O. ,"""" o"a 101l0t .EII 12'. OOIl:I:"D ~'II: O'IIIII!!C 11:1:0" 0 1I1!:(:'0'"
,IC.... • O. " I Ll COUIO'I!:II 1226 ..L O" 'VO II JII" 0000 "'IE .. O
,. """" . O' 'I'HII " I Ll!! • IU' J"" IIDIi"" ... 0 "'''"0 ''
....... ,...................... .
••• 2
I····· ············· "l' OIit ' "OII J." WI!!'II:" Ilt"'"Ct WI I "'O .V.I
,
1 •• 2 ,...................... .
. , . " O:O"""NIV'.'"C" 1132
• 13.
lite
,MI!!
"ILCM'
00011
I"C CO"IOTI!!Iit
NO W.II" n : ,
I ' C".IIUI .IC'O" L'IOK' • 123. .IIC .. I LCII' . I I!!ll£ III C H'
.23. 1I0Df<l LO. "IL II"IO III[T IHI" .. I Ll •
I •• •
. . II
IH'l"K J'1t ObVIC II:E.O .IEC la. 12• • C". "I"""" II""IE ... I III! lIiIK'"
....
""l CH'llOK JII. 1000 11:1["0 12.2 .IIIi 00 •• NO ' " 00f"' ..
.. n J .... Olltlit Il'l!! EII:IIOII Ill •• lO .. C"I.U"UI> Il. T lO 10''''
. .
. . 14 CH'L"" J.II WII IIO 'II:I!!.K U' 'I.II!!CTOft 11 •• 011:11 fO"'II"C ott ""N HI I'll!"
J ..... I I I . , U 4,
1.11 ItIWLNI(
. . 21
LO' ".LH""
.~
II:NO "llU""
II!!' ,.W ".Li ,?,. '1[' IItO OlllE
J.II .tlU'
. 1'" 11["' 0 'HI[II DONI!
IEllllE lI"t'" .. 0" lin "I!"O
IIOLl " 2 1232 O()"II[C JI. . .ECOII O'I"l." ,.ltf: .(CIO.
.122 .~ .IT. lll:'" 12" O(C ICIIT OI:C CII'.
"2'
. . 2.
0'" IOI'IlC
. , " C"'''''''2'
0Jt I .. "'I 'I[C.OIl:
Of"'" •• CK
,2'.
U, •
'11. 00Jt1!!'0
lO" II
I ' 100' DOllIE I IHIEII Ol!!' 10
I!!l'l[ 111[1"" .... LillI[
. . 21 JIO .. 111'1 .. liD II:ETUII:II '2.' "0'" O.. L' •
......
I'" ' _ " LI
"'I ,I··. I············.·
.. n U T".C. IOl /l O
. 11...
12••
OIE C VCII' DEC l l ll£ CII'I'
.." ,.I>'
"'2
I'"
"1> 2
WEIItO LO' C"''''"I''~
.~
.HO •• • ,
.... 'OI".lC
".
L." ..
II:' 111:111:0()
.,1,1"1' "w.y
""IK 0 . . . . . . . 11 2-7
ItW" HI ...
OET 'TUf'I'EO ''''E
ItIlH' ~"." .. ,
12• •
12'1>
"11'
12••
.2.2
l"I"1I11
........
. .III OI!!l 'T"II:' lO ,321 'M[ .Olit"v 11"..1[ ." 11.0111
I ••• . , .. 0",,1, ITO"" '0" "I!:"O '32' CllI "011 Hn ""I!:
...2 I'" "IlCIO'
Illn "0" "I!!COV 1324
".
. ' " O'HU"l " " "ILCMIo'
....II •• ".
. ' " • .... 01 •• '
.T . . ....
' .. OI:l ""
,fOllE
1 .. 01E1 LO
Il2.
132.
1331
l OI . H,.toPIO.
lOY ' l,'foP" "
J." 'l l""
,,""aulOC! WE 0011£
• 0 THI!! 1I000lO
00 "
.".
01. I fOJt I: 1132 lOll . C •
11.2 ". "ILl' "'I
'ILI: I ~O
133'
1l3.
J." "U'CH"
lO. II
C""II: "'£t
00 IT
LO"O TO CL'"
"I'
oon
'1"
J."
'110"'"
OlK"IC
1I'0l'lf: "
II:I!!'O III[CTOII:
133.
13 •• ID .. '"
JIO. CLII:'.II
lOI ' H , 'll"11
lilT lI"ICIOIJ!lL '
""II "00'"
II .. I"L II01U1 .. ....IICI!! liD 1""0" 1 3 "" lOV ' l. "ll"ll
1112 1".'''1" JIM" 1101['"' I!!II"O" •• ~UlO' 1" 4 J.II .. l I . 1 l 1"\1'1' IT 1,1.
...",
"14
.
Il10(1111 LO' ., ' 10""" COUNt
II I.
I I I . LO'O I'
LOY ." IIIOEI C"t
III!!T lI[TTI:II:
13"
'3.11
lO" I'ILIII'I
Jill oalOTH
LO' '''.OI • •• V 13'1 LO .. "llllO
II"
1122
.,. II ....."" " •••
,,
.T"",' If ) ,"7
1354
J." oa'o,,,
lor .H, .. I .... I IIl[ll
1114 " 100 I 13:1• LO" ' L,I'I ... II
...
1132 13 •• lOll "LC",
.3••
. J'"
113' lO" '''''"1[11,' 01:' lO OOIO'H
113. ."'. 0""1' I'"'' 1'611 lOI ' H."'''''"2
""
.... ...
• 1311 LO" I l ,"'"' ' ''
11 4.
• I"?
lO.. " ' ''OI!:II.'
11'" "I LIII.'
III!!T " LI[IO HI
"'VI!!: "Oil: CIIII
1'72
137.
J." "llPll
lO. . . .
OI'I"l""
Cll..1t "lCII'
...
137 • 'fll f'llC'"
11 4 , lO#l ' ''''"I!:' ' . ' 1'"1 LI!!:M LO 137. I'" I'ILCNT . .
11'11 I"VI!! 11 100
I
1152
"I . , " "'LIIO
LO .. litI[CO"" ""I[ lit: 0011111 "I:COII .. II.?
Ill.
1 312 ,................... .
~"" CO .... I.
..
'" 01'" ' " '2 NEil 211.
14.~
14.,
".
CO. TE .. ' I ""' "'
IIIE"OIi
THe: .. 11 11
E OLD
28S5
28'8 ,.......................
,.U ,'" ."
...
14.1
141 2
.. I II" .....
'EII' 2
.. ' . III •• :/,
rD'NTEII 2.'5
2188 ,,.•.••.•..•••...••.....•
, . lOCI IUIU.TII:S FOLlO" •
,414 '"
CO< TEll' I IIElltOIlE
21.5
....
2118 lOCI. • 0 1': .48 lOCI." .
1416
14111 '" lEII'V
~" 2115 10C." ·· 01'
DE '.3'. IIT.IIT 'OCI I L KS
142. 'ETur
1 ~ 21
""
co. lO'.I': C
OAUI 2
THI':N IIETtllIN
,
.IECTOII III.
m
2128 ICIIIO
21 2 5 ICO .. UM . 01'
I OCIeT
' CHIO"
H.NOlEII 10
DE"'ICII II
'" .TO'U! IIE"O 2 138 ICCO" .DE 'CD"U"" CO ..... O+O IIVTI
".
.. ,
14 ~ 4 IIE1U'2 C".IUI'".12. . IECTOII l . 1I 2135 ICS'. . IIIEI CCOI'I+! ,T. TU. 'VTII
142. .."UII m
14211 .'"
n ITOIIE
"NO REf URN
IIEAO 2HI
21~",
,C I . l
IC'.II
.DE ICI'.' I
.K ICI.l"
'UFFEII "00!'t lOll
.UFFEII .0 .. 111: 111111
I ~ 3. DI.II.II
1 4 32 eE1IIOll
,434
,.,
CO<
N."IUI'", •
IIT".T AT 1 1':110
on lE n,, "
215'
21='5
IC"L
IC'TII
.K ICI.II"
.OII! IC,Tl'l
'OIO+TEII lO
'OIIlTt" III
'" II"VIV 2168 ICSll ,Ot ICrll'1H IIU~" l"" lO.
"3'
1 43 11
14~.
1442
'"'
'"'
<.,
'" ...
' UT CH!!
IIE.I V
O' I ' l " V 2165
2 "8
217'
211.
ICIlH
'C.II
,
IC •• 7
.OE IClll"
.OE f CllN"
• DE I C"".'
.UFF ltN HI
"UI IIVTt: I
"U I IIV'E 2
1444
1446
1 44 11
145.
.......................
."
,« IIE t"OIl
,,...................... .
"EIIOl "liE THI!: 11.1111
,
" II" CO; •. J"Co;
2,1'
214.
21'5
228.
, • •"".E
CIOYt:C
ClO.E
O'EI!
UII - L.IEI.EO 'tTE. FOllO .. III 1 0CS
. 01' . t 4'.
.H •• C
. 01'. '.3
C I 0 "00.t:.1
ClOS" CIItI".HO
O"EII eO"".NO
,45 2
145. , 22 8'
2",.
ItTCIIII
'UTC.II
. 0' •• .,.
. K ,81
IE' C""" C"NO
",U, CH •• c ".o
14'6 N""t
145" al!:c"lIa
.lIt ·~llE' • MULL
.• t I ' ... S .. , . . . IIT"~' 8ECTO", ,. "Ul l
UIS
22211
IIt:TIII!C
"UT"tC
.K
.Dot: , . ,
'.5 IE ' .ECOIIO CIIIIO
"UT "E C CIIIIO
14 •• DE L "110 .It IS Ol':l[IEO·~· SE l l Sl l l CII NUll
" .2 L INKEII 2 225 IIIIITE .OE '.11 "IIIT[ ' ''Oil O.. EIII
. ."
.IY CII · ' I l l NU" l r . """.T CII "t IECTOII· EIIC
141> ' • IV "Ull 22311 111'''0 .01' "4 lI£ao 11'011 O.. EIII
223' ."'llT . 0" II • • , r l I T ' Clltl["
' 4 1>1> OD"" •• • IV C!'t 'CIIECK .. III':VIOUI II':C 1011 lfO+KI :! '
.IY IIE ll. IIEll "Ul l 22 ~' O"EC · IV ·E,·
C!'t lO I TO" OtV
1 4 7. !'t01l'1I
14' 2 110".11
.IY ·C ... NO T .r.o 'EC1Dt1:· ,:.C II • • • , ' Sl': l l
.1It CII ' liD Eln~v '011 ' l lE· t.c •• ~ • • • SlE l l
2245
22'11 ,.....•..•••....•.•...
14 74 •'0"". .IIV ... ·ENO· "Ul l. 2255 •• IIEII 'OTCIIII .U,.TN •
14" ~l l II.1I
14" n " l1l1 l
. • t CII ·Olllllll.L IIECIOft COUI'I'·
• IV CII ·"C'U.l St:C l0"S lO.OEO·
22 • •
I·····················
22.5 •• ~ IIEI 10'" CII.II"C1"' •
1411. 1'"1 11.11 2
141 2 " ElrTlE
. I v ell 'II "Ollt I'"llE tIlIlO,,···
lOx 'H.OE l " 'S I "010+' TO
227.
2275 ,I·····················
14'4 LOY IIL.OI':ll'l" OE LET tO 221111 ""CII~ lOI IIIOC.4 lO CI 11101:1
1 411 . J." Fll .. 1l OII .. l"V 22115 &DC lOY JSII CIOVlC 1111 TO C I O H.NOlEIl
I ••• II'S " t: TU" " 22. 11 tHf" !'tlTUIIII
14•• IIDtllll
1"2
lO I .".11011111
lOt . l . II ..... 1I
22.5
2388
'"
,..................... .
....
...4 J ' " I'"ll"lT 0'8~l. Y
14 ••
1'.11
lO . oaUI2
J lfII "OONt:
IIlCIDtI HI
O T. ~l.V
2 3'8 ,,...........•....••••.•
2311::1 , . III ITI .lIZE 10CII • • •
...
2345 O""IOC'
" 12 ,....................
",.
.,,, ICIIT .IV
.
TII"CE IItCtO" V"" • •
I
23:1.
2355
'"
10"l'"
ICCO" , I
'"
co,
n.OI"EC
0 " " CO"".NO
ITUFF IT
l ll"O .0011 TO l '
23 •• I TUI" IT
15111 VCIIT • IV • 2365 co. ~~~:i{o~c "0011 II
1'2 . TE""
" 2 2 TE .. r2
. IV
.• V
•
II
lI 378
237" '"
co,
I C I.II, •
'''IIIT'!:
I TU' "
II~ITE Dill'
.524 Tt " ...
152. TE "'V
.IV
• IV
II
•
23S11
23n
." le"H . '
m CIOYEC
II TU"F
110 TO CIO """Ollfll
"211 COIITlIl • IV • 23"
• II
153. nlCNT
"32 •............................
• IV
..... ..
,,:I.
15411 IIECD I . J I" IAVIV
LO" 'Ao;!'"L.
S.YE • • V
DIIl t f. l. tHIS TIIIE7
,,44.
,,445 • ET.
en
co•
'IOC"
' ''U IC''''
IIEIET •
"U' C"II t:;1I1I0
...•••
":12 • EO ...... IIEF 110 - 00 . . 245 • I CCotI •• ITUFI'"
15:1 4 JIll JU.N ,,' YEI- JU I U '" ZA .. I U~ It,.
,'"
2455
1556 JIIP' !'"Mt:O"'E THE il JUI'I~ 246' ICIll."
1':111 "0'''''1' l"" ' I':.C st"O t.c " !'tI T 2 4 .,1 ICIlH.'
15t1. J." "'UTCHII lEND I I 2 4 78 oe' CLIII "11 IT.CK
1562
15.4
l OA 111"11
J .II I'UTCIlIt
lO.O IIleHT ""110 .. CH.II
SE"O ' T
2'"
,...............................
3 •• 5
m .!!TUIIN TO ' •• IC
3." ,...............................
15•• J.II JU.IIEI rUT !.II" • 38'8 , . ~ECOYE~ ~llE CODE !'"OI. L OII.
15• • """tONI': L OA 'OI'.tC SEI ~~lll NVlllE
157. J.II OOOIlE OI .~l .V ONLY lO NVSll: 3878 I ' T"l . CTU" l IIECOY'" E .. TII.Ne l. •
15'2 lO" CA.IUF_12 . IIET lO StTr 3. ,,11 ,. ' 8 " T l"IEL NOCO". IN THE •
15 7 4 J.II OOI OTH O " ' l.Y I I 3831 ,. I.IIIC 1'.111 01' O I I"TOOl TilE •
15" l .. " • • lOAD ltllO 3835 ,. IIr.COVII Fl"8 I II Sll SO I N'" •
.1"
,..........
15111 ""KFLII ClE". ' ''O;F llt 3'411 ,. TilE "11 0 1111"" .'L L JU"" HEIl f. •
15' . ." "N" lI,nUIIN 3845 ,. 11118 lIa, OOlll TO S"VE 10l'lE
"I. ,..........
15112
1511 4 F"o;'lll •• t 1 " " ' .L L t Dill!
3858
31155 •............................... CO""AIIO I¥T E
,. COOl 1I1E"~1I1'00+.
3 ••• OCOIIII
·" ."
,. TSECl ··"" '"
,TII lO
,................ .
1::11111 38. , O'UFlO
'" '"' '"'
..
1:,.1 m
".2 ,..........••••...
, . r!'tINT I I"E •
31178
3873
OIUl'HI
'" '"' "
I'.'
"" .11
"I.
2111111
OOOO+E
""
J IIII CONVEII T
Jill ONEIY[
, ••••••••• • •••••••••••••••
COWtllT 10 ASC' I
Oll'l.t lO "V'lE O"l t
""0!'tETU""
3.S.
311'5 I"ECH
38.8 IIECOYII
3.':!
"8'
OINUlIl
OINUItH
." •
...." ••
." ••
'EO
no
lO I TOfilE
STOIlIE
"
AI!CO"'t:1I Fl.S
Ol llEC TOltv
""0 HI
""A "
, ."
...... "
IIttE ...... "1:11
2'.5 , . 1 0 C. N""O lE!'t co .. t "011 • 3. 115 " 'OC
'" '"
......'"
2 ' 1. , . OI.KTOOl.THI. CODE .... . 3t18
2"5 I ' """TtN TO I'!: ' 1110 OF • ;'''5 OOlllC m TlIIPV .fIIVE S ,.T U8 I II0li
2.28 , . T ill: UN. UI HOflItE O C"l l • oaUI2 0111 IE C
28215 I ' TO THt" ~ UT C H. 1I000TI"'!: • •
317:8
312::1 '" IITilCII 8AVE
" m
2 8 38 , . IN I , C.UIIEO ~1I0'LIE" • • 313. O.tll,
'"" ., "
..
28;,' " ON THIE I2IUl AND "'., • 313:1 l"ECl IUIVE
2848 I ' NOT " COIIIIECT lllETHOO • 314.
,,.
coo IIII ."'T OC
'" '"'
."
.0011
lO .00!'t
~II.~
2.'•••
285'
,_ ~0Jt IIA ' t , " , A ~H""AC -
'EIII: TO THE IICIIEE N.
, . THE CIO ... V I . "O.IE
•
•
314'
31111
31515
on
m
II l.VTOC
OltlFlll
OIUI'lO
,,~
'"'
a l...o lO
10CII
211>. , . FlIEUII!. !!. ""0 SHOULD ''If 3 1l1li CO. III> S VTot tl'[CTOII
'"
PAGE 90 THE A .N .A .LO .G. COMPEND IUM VOL. 1
".5
3111
~DY
Ity DMI.2
'.1, " ",
ITIWF "II
.. l7.~
37~. ......... OI .. UNL LO '''11
.....,""
3P:5 I n DIWJII ITIW" 1.111 l7~~ II ...... ' II TIJI''' It
31 •• Jlllit D'!tYEI: LO"D IITOC IMTO "" I IWF~ 176. OI_H "' .... 11:
31.5 I ..... 1I1I:1.u" II' MO Itll.O. IIlITOft. OLD 3715 11 ...... 2 I TIJI'F 11
:U,. LOI 1M, VIt .... 11 .. II. HI .Oft In. O.IIVI!"C 80 111.0 It
31.,
3:1 • •
:SUS
'1'1'
LO'l' I l,VII"'D
".11 ''''1''''
JB CLIlIUlIt
1.0 "tHO
0"
C...........
_ _ HI!IT
01 11 ........ IT
......
" . . 1t01"" C...... N
lU' "1111 IU!IDII( . I:ITOtII! 01111 'OC' l":1 CL • • • Nt
322. 3 ••• COMM I ' I!LIII! IE' IT
322:1 ,...........•.•.•••........•.•..• 3'.:1 CL(. . . . .I!I
.11 VTOC 00.
323. I' ItI'TO.~ .NO
'HO~l C~ 'T.T~ :'lilt.
,,.•••••...•.........••••••.......
" ' DC
'US 3"~ ,~
' 0011"'" Til IT ODS Z"
"H'
3Z4'
;,123'
3235
32• •
1.0., T~N"~
LOllI (I'.n • • • .,
.IOE "0"11.
J .... _ .. r
III.TOftI: IMHI
III:T 1I1"'utI
J"" IF I!" .. T...
I!III1Oft SO J "I'
l l . l 'I.\If: .. , ...U.
312.
3.'~
3.'.
3'l'
3'13~ ......... ••••' "
.~
DO!II'L
114 2
,TO.T.
, '.lIot. , ...
"'0 • • 0011 •
1.0.0 "'LI! UIlO
."'D .II ...C.
I:LIII! 0 ....... UlltO
"0lll!" dM .T'''U.
.. 0.0 .. IIITI: C,,"N."D
32.'
327.
ST ..
.IT
"'1.".
1'1""" FILE DI:Llrl!O FOIl. .IJII.... "
3"3
>e, n. DCOIIf! .TIW' til Dill 10C.
......•••
>e,
""
:)2• •
......
"OJ
I'IU,ED
'''' , 1'.'''
100 " U'IEI'I ..... . ..... ' . I C ••
a. •. Itll OI!LI!'I:O
"'.I'H' .. '"'
.o"
m
1I.IIVEe
"'-"NI:
••• 0."
WIIIT( OUT 0' • • I:C
J"I' .0011 " " " .
..
32.' 1.0" . .. ,1'. ' " MOT' ..... UIII:II ..... TII -::Sll =- .o" " ... TOftI: 0.11 10C •
m,
l2 •• JS. FI.'''Ir DI."L ... 'UII 3.7. CLII .".. 1:11.011. ClI• •""1
"'I'
................"
',n., ,...............................
, . TII"CE l(crOfts "Oft CONn"",,, ... .
3'7:1
3 •••
3.1:1 no
IH ,II'."'I:
... . 01 ....1 " , . LO
OIlI'L.'"
III
":1311.
"5 J ..... HIIII
011 ..1. .... " "
IEUT " / 11:•• 011. 3.~~ , ............••...•..............
JII. IOI:III;D 3 .... , . NIMI .1!"111"CI: I:"C'" ,I:CTOft •• 0 •
".,
3 3"
I ..c 'ILC .. T
'''l VI_
I!",IIlICt LO / HI Hn 'I!CtO.
'NC III!CTOII. CauHII!.
III."CH NO .. II ...
l .6:1 , . U' ' ' .' I!: lHt 'I' r """ TO 'lILL'"
3·7 • • • II I!:CO" ltll THIt I' ILI •• oO HOT 1'011 - .
,.,.
33" INC "ILC"'_, I!".I! I .. C HI 3. 7 :1 , . ol!"T TO oI:CIII:II!!:H, TM • • 0' 'I:C.
,. ..
V'OO" LO. "ILIOYN .IT ' I LI! • TO .... ICH .IC 3'1. , . TOII.S .".11. .... 1 '011 I.CH .I!:C - •
,."
,.,, CN" "NU... . ... IE .. , , "'I! 'I!: •• " 3 ... :1 , . 10ft TN.' " .LLOC"TtO. . . •
.....••••"
• Nt: .. OftI!C 1fO • • " LI: HO' IIICO"I:II"'LI!:
3413 Lo. C.I,Ul'oIZ.
3.,. Oil. rDl"I!C
"'1' . 1111:1 LO "O, .. TI!II
O. . . . t H III .ICTO.
' . .. lI
1.0. IH .II(.Lo .. t .... OC.TI! "SII
,.,.
..,.
' . 23 .lP CII'I!C" , .. UII;O •• III.Cl I . DOOlf: ~ LO" .", 111.1.0 111 ,,,0
..
Jill 'ETUI' I ... E 'II:ru" .. IT 111.0 JIll F LlI'It 0'.1' .......
,." J .... "I!II;I .. .. "",0 DET NIT .I!"CT .... '.1:1 LO. IT'I!CL LO IEC
,, 4:S,, ,.............................. .
3 •• ' ,T" O"Ul' .'UI''' I '
.....
•• 2l1 Lo• • "I! CM " ' SI! C
'.3'
,,,.", ,,......•••••••...........•.•••••
, . . . . . . . 1t•• Oft I'''OC.''I'''' "'"• • 'T. O.UI' 'TUI''' 11
' .3:1 J •• o.IIII( C .IET " . tcr
•••• J""
... .000 .D
..... 11.0
,p
,.7. en D""'."
I'IU'I!D O.I"L'" I' I LI! •• NI ' •• lI .. 01 . H, '".OI!" 1111. H,
I M,"ODltL MS • • 1 ..:1' Lo" . L ... IIIM . . . . . .0
,.....
' 4'3
3 •••
34'S
en
."
:t1:~~El
'" ,-,
......
,~
'''',LI IOI(I!''
MS. 1.0
011 ........ 11
1: . . , "' ''H 1,,",0.
MI HI
'.:1:1
••••
"1:1
'.7. , .. J.II I'll""
JI. co. ......
Jill' IIH.II
JI. ""OIT
OIIl"L""
CLI"" "'."1
.0 IIE.O 1:.
" . 0 "'DC I""t
..
. L,LIIII( •• '.7:1 ~ •• " 1:'.0
"
' • • :1
'LII"' T
MSI Lo
0111"".' •••• LO. C".IU,_I2 •
III!T "'IT 'I!C
liT 1.0 ~T"
"." no
....., .. ................................
JutI"'~1 011. TDI"I!C 011. .. ITH HI
"
3111'
••• DI'IU U
000"'1!
I"\IT !,II' • •
HI III!C •
0 1 ......... O"L " .. 0 H,.".
' • • lI
••••
..':1
.10 IIICOO"
JII. II.,UI'
,1' . . .I: ,.' .. I:I:TO
IELII .IT .. 11 ••• 0
..
l:UiiI OO'oTM DI ... L • ., HHOLI: 'HI"" .11:1
3'"
'333
••• .. urCH.
.. 0.0 CIII'
011 ........ 41 1:1
•• II.CO"I!. " ' ... l CLI! •• U.. COOl • •
" 4'
"",.
"',
'L, ... ...:
1" 1"., "II'
1.0 .. DOli
HZ.
41Z:I
,.
••
11 ."'1 .. ( '" VTOC. CLI!". 1'1..111 • •
I'Ul U.. IUCCIt ... NII8 • • 0 .I!T • •
I'LlI'll 413. ,. TO ' .' I C. '1 .. 1: , . III:COVlElIl:o • •
'" "UT U' " "
I'U'
'14. ,,...•...........................
H3l1 , . '~I!"IE LI!' I T .I!" .I! CDY!!:.I!"O ' .
""
33 • • ""
en
D"M."
' ' ' ' , _.CO
!,II' F I Ll: ... ...:
NO .. -.IECOVI:II .... H,
".,..
."
'3.:5
...
. L , II'OII.CO .... 1.0 "':1
33'"
"'3
,p
no
.. LI .. IT 0' ...1. . ...
c .. l •• 1'11.1: .....1:
41:1. III!"COON
41:1:1
Lo . . . . . IITOC
LD ... . ". 1I1OC .ut<
_ "'"
.. Til I.
H
" CL"M""
.t ••
-.....
lUlllE UIT " ' 1'""011. .TI D_HI IT ..... I' Ir
,T.. o_LO .,UI''' IT
'" DIIIN"" 0'11' ...M! ' . . :1
..... ...•••
,p
3''''
"., CL.N"" C.. II ....1'11: 41 7 . 1.01 1 • • 1 III:C T Oft ' 6 '
en
....
." ,OOO .. lCo .D. Mt 417 :1 LO ... , •• ,
H •• ,T I 0 1ilU11
,"".,,,
3 • •• IL . NO.IECO .11. LO 111"'"
,~
"LI .. "
.0lIl11 ..
01."L"" IT
CO"""'UI!" III
'":1 .T ... O.I,II Z
LDIII . ·M .T"""
IIIftI1I! CO ..
. t':I
3.'" ,, .•................•••••........
.T. OCOtI" IIT U.... 11
' Z•• JIIII o .II"'.C .... ITIE 11
..
3.23
3."
, ,
,.,.
3''''
,
. TO IIIEIE TM.r .. I!"'IITH I . . .
CMIIC~
:1.3. , . OI . IECTo." N.TCN . . . . .'" 0" I'lL'
..............................
LOllI
ItOft
.. 11.1:'"
, . .. c .. r
.
011.111 .. ":" 1.0
0lIl " ' COUNt
.'.:1
4Z '.
4 Z ':I
IU.
4 2Z:I
. Z3 .
II'I. "OU1011
Lol .H ."' •• D
1.0 ....1..11'.0
JIIII "LI .. 'T
JIIII .. t.O.1I
JIW' C_••
J .... 11000 ..
.1:1 " I '
.00llt ••
OIll"L." IT
IIl!lTOItt 0.11 .OC'
tUT .. ' tllil
3n, .1It: 000" MO •. t.IIOIII IU:I VDUla. JIIII .lIO.1I 1I1llTOIIt lOCI
3 •••
,", LDIII
1t0lt
1"1 1.1:....
' I .. C .. , ' .
OlU . .. ,
0lIl 1Il..0
42 ••
IZ.:I
Jill 011.""
.. OJ .... . UCCE.
DIS" _It!
"UCCI . ... .
lU. eo 1 .. (11110.
,."
,.,.
I_ DOD ..
m,
' Z:I. LO" . L , IUCCI!' .01lll1!'1
...
CLIt CoutlTI!". Jill "L l .. 1T
..
I'" 'ILC'" D.II"L"" IT
'.7. ,.....••.........................
4 2 •• JSII CLII .."" CLE •• ".Mt
" ..
4 ZI:I ITI .ICOV. CLI:_ .I:COYIIII ,......
37.,
,............................... 01' .. . 27:1
4 ZI.
'2.:1 , . 'U.lloo,,"t 1I1.0IK, IIt.TOIIIES •
""If
3713
LO . 110 .011
LO .... L.OK
O. N', .1
.MO 1.0
4 Z".
4Z.:I
, . T~ 011111 lOC. TO • IIt.O COIt- •
' . 0 1 110" "liD "olin, Till! I""'''I!• •
3121
"ltS
373. , ..............................
JI. ' L I .. IT 01111'1."" 43 ••
'31:1
• :J I.
,,................................
, . TO C."UI' . •
3741 ,...............••••••.••••.•••
lUl , . I n IHII;I: Cl O..... 1'01\ DUll; I'ILl • ' ll:l "1!1I01l11
43Z.
1.01 'H ,C"'.UI'
..0 ... I ".C"'I'''''
VOL . 1 THE A,N ,A.L.O .G. COMPE NDIUM PAGE 91
..'.2
• 3. ' , .
" . IIL.IIII UII(D. I N "OD,TlOII, • 'Ul l.fll .''' 7~ P'UTftLC •••••
•••• , . ,ttl: HU"IIL" 0 1' I'IILL IIlC l 01l:1 •
'UTLIE N . , .. " •
'UTSlC _,1'" 'UTIIT" . ' 1' 4 6 IIAOI _ . " 1'
'. ,,
."1I , . "V" 'L "'LI: .11 DlC"LHEHt I: D .0 •
"H" •.•. "DIE"" .2 Z0 11 IID Na li _ 22 "7 IIf"D •••• •
"'lI
. ..............................
, . TH"T DOS DOLIINT 110 ." ....
.. _.t.,
11("0..0 -26AIE
ItItDtOl .IL ...
RIECOD N · Z ~.'
"I!aau" _ 2 '3'
ItItCOVIl -2lTlI
"IEIIOIiK _ Z'3g.
44211 I'IIIOIT
•• 3.
•• 3 11 1'1110'
c,"
co.
c ••
••
D"UI2
CLI: .. "
' " l ' I'D"
D I VIDIE ..
'"' '"•SHII'T III II
"I!II"
S"VI: I · '1171'
SlCD" ·23 . .
"110 .2~1I"
S '!VIEV _ '08'
SItC" •• _11'1'2
S(TU' _21C7
IIII(C . 2 " .,3
" "VI, . Ilt l ll
9IECM"
I ' ·,.2.
_ "IEI'
"~ T U'7 _Z'CD
..".
lit H ·Z36.
••••
...
.~
,..
•• 1I11 '" ,
OIEC CII'OI ST"" ~ · ICI'C a 'A IIE!: _1I'1E1i li t CHI< . Z • ., .
44 6 '
•• 611
'" •"
en
.~
"I MO'
" 8HII"S
Dl!ft" "IMIE 8 H'T
OIOr"TIt on
" '"',.. liTOI' l L ·Z. 3(
STlIE CH · U74
8U.'(0I ", Doe
,TOP'II S ·2 2 86
"S(C\. · Z 373
e UCCLIII .~ .. CC
ST OS'" - 2'27
ITUf" _1 1E1I'
T" III .",1'
•• 7'
•• 711
••••
.,..
•• 1I1I
••••
••• 1I I',IID2
'"
,~
'"
c,.
'" •
."
.. I'IMDt
OIEC CM'
",
.., ""I!:S
""I:""0011:'"
c ...
,.,
..
,.,
,. •
'I S CM'OI
.1I.1I
'1I . .
.1I 'lI
.1I2.
. 1I211
'"
.. ...
"CI'IMDZ
'"' "
c~ liMn I
.",
..,
IH'T
11""11
S H'T
He III!II",' Vl
. 1Il . 'c,
"'DC, ..
P'UL L "
'"' ""8K
...
'1I311 ,~
CLIEM n ClOIt on
.1I •• "."TOC,'
"TOC.3 '"' S .. CK IN vTDC
'1I'1I
'1I11. '"
coo VTOC'3 '" ,"C .V" IL A'L( 8IECIO'"
Listing 5,
.1I1111
. 1I6 .
. 1I.1I
,~
,.,
.'1'1'
.~.
"TOC ••
DID WI!: FL 11""
HO."IETUIIM
.1I 7 .
.1I 711
'"
•.••••..•..............••••••••.
'"
ItLSL
.10 0 ItIlTuOIM '" "'
II IE" •••••••••••••••••••••••••••••
.1I1111
• 1I • •
,,••.••.............•.••.•••••••.
• '11' ' " III:COVl" I',Ll PI(IIS"lIl S I'OLLOW.
15 IE" **
DISK TOOL IASIC PROGRAM *
ZI RE" IV TONV MESSINA (el l'8Z.
...... "
.1I.1I P'''SSI
·."' '' I ""II" - , ZS RE" •••••••••••••••••••••••••••••
4 6 ••
. 6 .1I HOOlL
lIO"l CO ."
·"
'CHlECICIIIII I'I L IE COMDITION ' CII MULL
• IS lOOT IIlLe lI: D '"
"
C" SLlI. HULL
C AMMOl alE ftItCOVL"IEII' , • • 110..0.. Cft
38
35
POKE 82,8:IE" **LFT MAR TO I
RE"
***
.."
" ~ ' I'I LI! 11I ''lCT ' CII T'" ""SI2 _ '
48 REM •••••••••••••••••••••••••••••
.62.
.6211 DllIllll
·"
"
' ''I!:COYII'' lwe I""'IE' CII HULL
' DtIlIECTOIIV tH TII V IIOH" CII IIIJL ...
45 REM **
VAAIAllE/CONSTANT/5TRI.'S •
...••••,
. 63 . "I:.LO
'.3' IlUCCllI
VS'"
,..".0
•• 1I. 1"" l1l
•• 33 oreN
·"'''II'''''LOC''TIMe DE ... lTIED StCTOIlIi ' CII
··""
, _ . SIEIE H IKC , Vl"IE Il "
··""
'(11110" 1 M VTOC IIL"II ! "
·"
• I' ,L L "1t.1 l""OII"
"'''IEC T'''' '' ftll .. S
I'I!LL COl IOIJI.. ...
""flOfl 'H VtDC IMI" !!' aELL C" l1\li..0..
SLLL CIt HUL L
L".""'·
.lLI. CII NULL
IIll.L CIt HULL
58
SS
61
IEM
RE" •
IWITIAlIZATION FOLLOWS
Rf" •••••••••••••••••••••••••••••
CO.SUMTS FOllOW
65 REM. THE FalLONZ.' CONSTANT'
*
..
*
••••
.6." DIII,",
··""
'O '''I! C'OOl'' " I T t 1E00"0It " taC 1t. II
11 RE" * ARE USE' TO MAKE TME DSK- *
•• l.
DI"'£2
,.
'I!LI. CII MULL
IIC_ -.J.2
CON VIIII' •• W J
11 ...... 2 _.l ••
CI. "S'" . , 1 ' ' '
C _SC _10 . .
C" .....
I_HI
INI.IITII
111 __
_.:s."
_ l23.,7
ZIIS
-.... ·.3_
Co..l - _ . , .
CIIN TIH _1' 21'1:
11_0..0 _.3."
D. L IIII. - 22.3
III 8£"
1~ "CC'. . =711 : ILACK=I:S.IIEI=71%:Bur
HI=77J:"fll=772:I.FP,I=IZI:CASlur=IIZ
'l"" •"l' III~ . l37. I:CASPTI=CA'IMr+I.,PTI
111"011 _272. OlflLHf
.. S_ __2'118"
• •• 11111111: . z., H
0 1_ . 21 ••
14. CWAI=71':CNW,IY=112':CKLIM=415:CKI
11111I0'Il 2 -27,.
""'''L .,1',2 -'DOlI:
. . ~ ... y D"""C ·11.' 0lM=S":CKIOLP=SSI:ClIOC4='121:C.TIM=1
'DA''''C
11 _ _ 2.C. -2"'1 DII.OTII .11t . . _ . , _ 1 I'fl: ,sl:IAUK1=718:"UXZ=77'
IIIIOIOII!: .23;tt" _1I1EI' _ " .
_ T M _ 2 K2
145 . . VWI=777:.IVlG=771:.COMMe711 1IECR
8011« ... ·Z8Ce
II .... _II!I'. _I''''
'''''lC .231'C
.2S28 ODIIHb •••• 2 EK=lJ61:IU.IT=76':fITLIX=llal : ERRfl,=7
5SI:fITI.P=IZS:fIlIUM=75S6
IIIU "11101 _1 . . .
• • HIII .1'1. ,_. ·,0••
.... VIE. 'l.83
I: II00TIt .. _2._.
II"'I:C - 23 l •
11 1110.."" -11'1"
I:SC . . . . .
lSI fIR~='17':'.EEI=ZI4:'SEC='2:HfXD
I I _ L' _1'''1: EC~IZ7. ! MIl.=515:MEsa'f = 1~3. : NNL.K=.1~
(UK .oz •• ,
I'ML _ _ 13,e
Itl ll _ID3, I!!I ITZ · "3 1'
I'M ...... -UH: I',LCNT · 22" ':'CMa.'f=1115:'DII=1'21
I'ILLII .'I'l"
I" L DOl' _,..C
1'10..l'1li' . 2Z"
I'ILIIT" _II'IIC
I'ILIIYII _IDS.
I" NHI . l Z .. '
155 PHElP=11'.:PLUSMII=.iS:PMOD=li45:P
I'IN'.2 . :12 ... FIHD' - Z 'lEl 1' 11111 '"~"
PRIMT=ls38:PRECOVEI=1'31:PROCtIP=745:P
SfC=17:PSET=ZI1I:PTRACE=17'S:PMRITE='5
•
I" N' Z - Z. " I'IHIlIl _Z8II" 1',_1·1"1'3
I' IIlDe: _2713 '"''''11 '",IE'I' .. lUll!' _2"1'
I'LI .. IT -21'9' IIU CHII _".7 IlIETI1 ·1 8.C
'(TUII .,IE., 8t:T_ ·ZII. '[TM",N "IE""
168 RECOVA=,a77:RED=64:IEDIR=7123:SCRO
IIItTIILC . . . ., SII'S'" . , It" 11 IIDCIOV _2 33 . ll=661:SETDSK=4":SETSCRI=18S:START=74
.OON _"'1' HIE"DIEII . , 0 .", MI",Dft .IIIP 21:TOPSEC=1SSS:TAASEC=8224
Hllt,lX _'III'Z
IC"I Z •• 3 . '
H.211M
IC'.H -'348
-IC'. ' IC.II · .:14 ..
IC ...... _.3 •• 165 TURD=I.6:MFLA' = 15S4:MHITE~I.:YElLO
I CtLN ·.3 •• ICILL -'3" ICC OII •• 3.2 14=2.
I C,TM _.3 . 1
,CDIIUII ·'34, ICHID _.3 •• 171 RE"
I C'TL •• 3 '6 l eS T" ·'3.3 '"Ol1 .ll3111
.:;1:"". 175 RE" MMMMK •• KK ••• K•••• MK ••••••••••
IGe. ' •••••
.. 'IIHT •• l . "
I OCIII' . '3 "
~USHIE. · ":2 •
ITSUSS
L . ' HII ·2123 tal REM *
VARIABLES FOllOW *
PAG E 92 THE A.N.A.L.O.G. CO MPENDI UM VO L . 1
......
,.5
1225 ? "1JIj":'OTO PROCIIP
1238 RE"
1235 RE"
..,,....,
1248 RE"
1245 RE" *
RE" *
RE" *
- OKE
EX
,RED:POKE CH~R,WHITE:P
HIlO:liOSUI DECH
AEM
AEM
1=.
FOR 1=2 TO lEI(A$)
A$(I,IJ <..... THEM GO TO 131a
'65 ! ~~~~IIEEIt';5ECIUM; A$ (I, IJ <="'" THEI 1=1*16+UAl (A
" ($"; ::~: ••. ~~:&OTO 1388
'7'
075
!
? '
~CUPPfNT
~ SLPf
(PI~f
.. BCUT
I~ _= ';DRIUE
I-IRITf(j / N) '; :IIPUT
A$(I,I)<"A" OR 6$(I,I)"F" THE
..S ~i;·ii=''''JI~·'.·'C(.S II, I ) ) -6SC ("~") +18
THE I 1 ".
I-IPlTE (lBCPTfDI'il'
""LllII',1
THEI '? ''\UJQj
':&OTO 18
1145 RE"
U58 RE"
1355 RE"
- 1368 T5ECH=SECHI:SECHI =IIT(SECHI/16)+1
:HEXREP$Cl,l) =HEXTA8$CSECHI,SECHI)
1165 SECHI=CTSECH-C5ECHI-l)*161+1:HEKR
EP$C2,2)=HEXTAB$(SECHI,SECHI):SECHI =TS
ECH
1178 T5ECl=S[ClON:SEClON=IITCSEClOMl16
)+I:HEXREPSC3,1) = HEXT~8$(SEClON,SfClON
)
(SEClOM- l1*16J+J:HE
~~§!'~'£~;;'IETijiili -... (5EClON, SEClOM) : SECl
**
111*
* *
**
***
,IlA *
? ''OJ
1135
iiETU'A. ".'IIl. + 0
THEI 10&
THE
CN) CO""""' BY * m;)":'OT
DISPLAYII' THE CONNAIDS *
AUAILABLE II DI5K-TOOL .•• * 14'8 GOTO PROCIIP+5
•••••••••••••••••••••••••••• 1"5
15.,
REM
RE"
1585 REM
------- 1518 REM
1515 REM
1528 RE"
1525 REM
PAGE 94 TH E A.N .A.L.O.G. COMPEN DIUM VOL. 1
")+PEEK
- PSEC)
1151 If lOT 'EE.(CITII) THEI 'OKE (Ft
lUNa) I:'GTD PROCII'
1.55 ~ :1 .~ TO C.ITII mlIIT SCII (RET
) TO STIP"': I.'UT .. IS
11'1 If A.l="" ntr:1 'OKf CITII,I:POK(
fIlUM! I:'OTO 'lOCI.'
1865 IF .. IS="P" TItEI 'OSUI 'PIIIT:'OTO
1855
1171 If AI5
E fIIU.,.
1.75 ? .. ".
18.' " =115.
1"5 'OTa 1114.
11,. RfM "":!!:!!!!!!!!!!!!!!___...___I*
11'5 IEM
. :
1.,.,
HIS REM
lU. RE"
Rf"
jlltXCH
~ICH
IUS REM
1'2' Rf"
•• 1'25 RfM
1'31 If (HfLP) THfl 'RAPHIC5 I:MfL,=I:
• GaSUl SfT5eR.
U35 '1 ".II'UT fILE _ _ EI (Hfl 01 DfC
T
H4.
.$
)'" OJ ".TG [!JiIU!Il!) OR !} TO .'ORT";: I.'U
•
C HECKSU M DATA
(See PI" 7- 10)
•
1. ta~a SJ2,l'!,"'i'.'.21'L~7'15J'.11
., t14 551 J71 • 7 7 7 '41 lae • '1
.t ••l •• i'.I~I.,i.l"t.l".'J'.'I.J'".
l",.J 21 "2 516.196 4'% 1111
III tat. '42,~",'5,ii4,lil.' •• 1".7'.
4.5.18. IIi, 1St ••• 7'1 '1.161'
215 .arl 11 •••• '5.,'.1 .•
7.,",.11.' ••1
7 1 •• ",7'2,1",5.J 2J.S.'I
-
11. tATA 1.',551,'.,i22 , 1,.,211".,'S,
7'7, •• ' '.1 III 5'. 11' 1 •• 65 ••
'" •••T' .7i.l.i.l1.,.'.,7 •• , •• , •••••7
"~" .. T. t,o.a.7,1.1.2S7.011.11'.S72.7
, 75J,.'1 '%,5".'7,'" z55 •• '7
.1."',55I,.5 •• 5. , ",361,l.'.1J.7
VOL. 1 THE A,N.A. l. O.G. COM PENDIUM PAGE 95
366,'26,847,51',367,11',626,532'
665 .ATA 117,373,668,817,628,661,612,3
8',86,2'1.8',55',771,812,8'5 , 76'4 " ' • • •S , 1.2.
735 DATA 565,'8,18I,71','II.'SI,688 , " " ' . 'IS. I .. SS. 16"". 17 111. 111 1' , ,"411
1.728.677 , '15,815,'6','83,21'.'862 ':I' . '.11 . ....... . . S . 173.
811 DATA 26,536,251"'8562L823,33'.'78
53'6573,11 ,531,16',6 5,6~2,1 63 '11'. ":IS • • •".
885 ATA '78,121,336,18','11 , 762,6'5,' ' 11'. 1 73 S
3,563,577,828,1,23,567,117,66'6
'58 DATA 658.4'4 , '58,166,775 , 385,533,4 I "'. 7 1111
'2,471,6'8,84,18',76,285,318,6'74
l1Z5 DATA 363LZe8,7'2,27'L7'6,756,788, '11 ' . 7'"
155,585 78',2~2,867,ZIZ 5~2,3 ',7635 '''11. 3 48. 7".
118' DAtA 824,'15,Z25"j6,72,,741,I'S,
'18,166,7'6,283,81.,264,673,15,7'75 ''''', 77 •• 77"
1175 DATA '8',7'3,2'6,456,'64,185,588, 1111 . a ••
512,338,541,25,28',811,'5',361,7514 11111 . ':IS, 111.1
1258 DATA 865,'82,7'4,2'7,"',837,8' , 6
7',584,216 , "3,52,877,2'5,7'3.8837 I'ftfCOVfll '''''. II .S
1325 DATA 471,315,',7'3,32',7'6,2",53 I'IIOCIHI' 1,,11. 4 7 11. 6211, 7" :1 , 711', 7 11S . 11.:1. 11117.
6,426,321,1'1,2'2,88',777,722,7885 II .... " ':1. 122S. 13 . . . 1 4 ... . 1711' . 1'811.
1'.8 DATA " ' , 8Z',7'5,2'8,'6','I,61,81 111 111 . . . . . . I'S •• 116 ' ,1.4 • • 1"81. I""'.
8,26',786,781,811,"5,326,6'8,'412 2. ".. ~'''1I
1'75 DATA '31,587,3'8,8'1,386,7'7,561, I'IIr:C IllS , "".
815 '5' 7" 382 813 '2 155,821 '8'1
1556 DAtA l'I , 3~,,4'I,625,458,'51,286,
I'lIfT
...
C ross Refe rence of Disk Tool BASIC prog ram
L I HE Hun.EII'
III1ITE
YI!LLO II
1611. ""'.
• 1. 11. 1 ~411 . . .. .
011 I III! 2311. 41 •• 74". 1111 •• • 7 . . . . . . . "'11.
13:1. "2 :1. 7 '~ . "211. 1 •• :1
2 . 311. :'''11
• Ollll!!" 13:1. 7 .11. ":I' . " .11 2311. 711 •• 7. 11. HI3 •• """. , "" •
.U, ... UlI • • 211 ICCII I 23 :1 • • '11. 1.:1. 117 •• 136 • • 13.:1 .
111. 0
"3'.
IU<'lO 1311 . 42. '(CLOII 23 :1 . . . . . :I'''. 1178. ' 117 ' . U 7 11. 173 • •
1 • • :1
." 'I!C II U" 2 3 :1 . U:I . :110. ""I . 11" ' . n • . 77S. IIIIS.
•••• "7. 8 .. . . 11"11. ".:I.IIIIS. ' . 2 ".
" ':1. I •••• 172 • • 17411
CIIUU' 1311 . . . . . . '117 . '112:1 • • " ...
" ~'1I .• 711. 7.S. 7 S • • 7 S:I . 7 ... . 77 •• 77:1.
CIISI"II 711 •. 711 :1 . 7 ••• 7" :1. " ' . II'~. II ...
11111.
" ' ' ' . 1118. 11 7 • • 113:1. ' 2711. '211' . 121111 •
• 2 •• • ' . 7 11 • • • ••• ' . 1111. ''' 7 1. '''711.'1111'.
'''''. ".S. ,•••. ,... ". •• 11 •• ' ."" . '.11".
I .... . . . . 11,.7". 1 7'". '71 ' . 17'''. 17:t• •
CKLI"
CU'O .....
'.'.
,4'. 77S
11211
. . . . '2' . I • • •• 17211
,., '''' '.2.... 2•.".'II"."l''''
. . . . . III.". 'II". 111111 • • "311.1 ••• • • ".S.
CO:IIOLI' Ht " ' t ... 2 .:1 . "11 . . . . . . '''11. ".0. 13.'. U.".
' . ' . 7" U7 • • • 3711
' . ' . :n s 7.S. 2"' .13 • •• • 3.". 137'. '37"
CHTIH '.' . 1.11 •• III ••• 1'7. 33:1 . '70. ':1" ..... " . I."•.
112S . ' .4' .
11111:1 • • ",, :1 • •• 7 • • • 7 3:1.1.3 0 . '811'.
'AU" LI N' U'
1 .. 71. 2 .:1'. "l'"S
11 2 ' . " 2 :1
OAUI2 1411. '1:1 . '7 •• 142 •• 114:1
OIlYHI
•
O.Y l O
13 ... . '3."
" " . • ''' ........ 2. ' 3 7, . 137"
DfCIlEi 1411. , .:1. " . ' . 1.6S
'CIIHO
OUHIT 1.11 • • ••
lillI"
i!HllHO:: 1.11 , 167. , 1:lIoS . 1117 • • 1:111:1
14:1. " ' . '1111. I •••• t •• :I, 1. 1., 1.2 •• IS7 • • " 7S
167:1. 1114 • • I " .
fllTII1I1' '4:1 . 32S • • 211, I •• •• 1117'
PAGE 96 THE A.N.A.L.O. G . COMP ENDIUM VO L. 1
16", 17", .m
Ilia. '12', II:SII, "III , ' '9l:1a, 1'7 :1
lIlli, IISS, '''aI, I'ns
IU:l1'l ' 121 , 111211, '9alll. ".1
.,. 'Iaa, '"3::1,
"", Ins
• or YIIIIHIIILI!I_ 12
v
$FFFF
Bask (00<' to Mem. top
10420 follow...:! by O.S.l hardware area $288-4MEMLO
Fr~ p:ou;h area for modifications
10073 $2759
O$k Tool ML Code
7420 Area $ICFC
Pg. 7-le contain DOS 2.05 v
1792 FMS Code &. Disk Drive Buffers $0700 v
1536 Pg.6 Autorun.sys init. code &. IRQ handle $0600
Pg. 4 &. 5 not used by
Dsk Tool om v
cassette buffcr (128 bytes ) is u5ed $03FO
v
not used by 05k Tool 10Joe
PRo 3 serial bus handler [able is used $0300
P". 2 not used b Dsk Tool $0200
256 I\!. I stack area $0100
$eD and $eE ar" only (>g. 0
o Locations used o
v
2C
1 BORDER
U
FHI
UFLO
712
773
772
Border color register address (REGISTER 4)
Address of Disk buffer Pointer MSB
~
4 [ DBYHI 777 Address ro disk byte coum MSB.
~
DBYLO 776 Address to disk byte count LSB.
~ DCOMM 770 Address to disk command byte location . Commands used by DISK TOOL are PUT
SETOR with verify and GET SECTOR.
~
DECHEX 1360 Line number to Basic routine.
~ DUNIT 769 Address to disk unit number. Location contains cu rrent drive being accessed.
• ENTLNK 8180 Absolute address to the Change links ML code.
~
• ERRFLG 7550 Absolute address to the error flag indicator in ML code.
~ Rag is set by ML code to indicate any errors.
Basic checks the flag to determine appropriate message.
~
ERTRAP 625 Line number to Basic rou tine.
~
• FILNUM 7556 Absolute address to ML location. Location contains the file number to wh ich the
current sector belongs.
~
• FINUMB 8179 Absolute add ress to ML location. Location contains the directory file number of a
~ file $0-$3F.
GREEN 214 Value for the color green.
~
GSEC 82 GET SECfOR disk command value.
~ HEXDEC 1275 Line number to Basic routine.
HILO 515 Line number to Basic routine.
~
• MESAGE 7430 Absolute address to ML code which displays items in CASBUF in HEX! ATASCI
~ format.
~
• NWLNK 8194 Absolute add ress to ML code which changes links d uring a mooify link ope ration .
PCHANGE 1085 Line number to Basic routine.
v PDIR 1420 Line number to Basic routine.
~
PHELP 1190 Line number to Basic routine.
PLUSMIN 865 Line number to Basic routine .
~ PMOD 1645 Line number to Basic routine.
~
PPRINT 1530 Line number to Basic routine.
PRECOVER 1930 Line number to Basic routine.
~ PROCINP 745 Line number to Basic routine.
~
PSEC 87 Disk command value fo r a PUT SECfOR with verify.
PSET 2030 Line number to Basic routine.
~ PTRACE 1795 Line number to Basic routine.
v
PWRITE 950 Line number to Basic rou tine.
• RECOVR 9077 Absolute add ress in ML code of recover flag. Used by ML code (Q distinguish a
v recover file from a trace file.
RED 64 Value for the color red.
~
• REDIR 7823 Absolute address in ML code to the read directory function.
~ SCROLL 660 Line number to Basic routine.
SETDSK 400 Line number to Basic routine.
~
SETSCRN 705 Line numbe r to Basic routine.
~ START 7420 Absolute address to the sta rt of DISK TOOL ML code.
• TOPSEC 7555 Absolute address to ML location. Location contains the MSB bf the sector number
~
currently being examined.
v • TRASEC 8224 Absolute address to the start of the TRACE SECTOR ML code.
TURQ 186 Value for the color turquoise.
v • WFLAG 7554 Absolute address to ML Write flag location. Informs the ML code if the next opera~
v rion is a read or write . 1= write
WHITE 10 Value for the color white.
~
YELLOW 26 Value for the color yellow.
~
10 EXPLANATIONS
~
1= Refe rences hold true for Graphics O. Other modes have diffe rent meanings. If confusion exists. see color register
~ assignment table in the ATARI BASIC Reference Manual.
~
PAGE 98 THE A.N.A.L.O.G. COMP END IUM VOL. 1
2= These locations point to an area in memory where we want the data on a disk sector to be placed after a read. O n a v
disk write, these locations point to the area of memory which contains the data to be written. Disk Tool sets these V
pointers to the cassette buffer since it is free when using the disk drive.
V
3= Locations contain sector number (LSB/ MSB format) of sector to read or write.
4 = Locations conta in number of bytes (LSB/ MSB format) to be read or written. v
*= Point to absolute locations in the ML code. In mOSt cases the Basic constant name is the sa me as the label name in V
the assembly source code. Exceptions are CNTIN for CONTIN and NWLNK for NEWLNK due to BASIC not
accepti ng CONTIN and NEWLNK. I could have used the LET statement but ... NAAHH!!!
V
v
v
v
V
V
VOL. 1 THE A.N.A.L.O.G. COMPEN DIUM PAGE 101
v
v
HOME ENERGY
CONSUMPTION ANALYSIS
v
v
v 16K Casse tte 32K D isk
v
PAGE 102 THE A.N.A.l.O.G. COMPEND IUM VOL. 1
v
therms and cost of natu ral gas arc not used in "Kilo~ can be fur ther simplified by performing the whole
v
watts." All of the n:quired information except heat~ operation at one time:
ing and cooling degree days ca n be obtained from
'ISIlIOI 1%-lfl(STI$(Ill(M») . 'ffr("):1K
utility bill s. As explained above, the information on
heati ng and cooling degree days can be obtai ned In "Thermowatts," each of the subroutines for the
from your local NOAA office. menu options does double duty. Each subrou tine
If you have been looking for a relatively quick and computes either gas or electricity statist ics, depend~ v
easy way of neatly aligning col umns of figures, par~ ing on what is requested. The software accomplishes
ticularly those with decima l fra ctions, you might this by setting the variable T to a "0" or a" 1" during
want to consider using the technique I employed in menu selection . A "0" indicates that electricity data
several subroutines of both programs, for example in is to be processed, and a " I " indicates natural gas
Lines 3 170~3 190. It can be done in four easy steps: data. Each subroutine has statements which check
I. Decide the rightmost column for displaying a the value ofT and then select the appropriate data or
particula r set of figures. Then add I to that val ue. In print the proper column headings. For instance, in J
subroutine 3000, I wanted the la st digit of the vari~ Lines 3120~3I30, if T =O, the variable DD (degree
able X to be printed in colu mn II. I then added I to days ) = CD (cooling degree days) because elect r ic~
that number, for a total of 12. If yOll are aligning ity powers air conditioni ng equipment. [f T=l,
figures with deci mal fractions, use the column where OD = HD (heating degree days) because natural gas
the decimal poi nt is to be printed, and do nOt add 1. provides heat.
2. Measure the length of the variable by co n ve r t~ Du ring operation of these programs, do not
ing it to a string and using the LEN function. In line depress the return key at any time when respond ing
3170, LEN(STR$(lNT(X))) means calcu bte the to a screen prompt. Simply type the letter(s) or J
length (LEN) of the variable X after converti ng it [Q numbers desired for input. The GET statement will v
an integer (INT) and then [Q a stri ng (STR$). The determine which keyes ) you depressed. In order to
variable must be conver ted to a stri ng because the access the keyboard, a channel to the keyboard was
LEN function can onl y measure the length of string opened in Line 70.
variables. For this measurement, it is important to
convert a numer ic va riable to an intege r when the
variable includes a decimal fraction. TIlis is neces~ V aria bles u sed in Kilowatts an d Therm owatts.
sa ry because the ATARI eli minates final zeros after A: Used with GET to determi ne las t key depressed
the deci mal poi nt. Thus, 3.50 is d ispla yed 3.5. Con~ on keyboard.
seq uentl y, if you wished [Q align the numbers 3.5 and A I $; Used only in gas and electricity program.
Represents variations of the words "therm" or v
4 .27 and if YOll measured the whole length of the
variable, the columnar alignment of the numbers "ki lowatts" in column headings on screen or printer.
would be: Allows one subrouti ne to print head ings for gas or
3.5 electricity.
4.27 ANET: Used to represent electricty cost (NET) or
gas cost (GNET) whenever Single subroutine must
3. Pick a variable name for th e column where ca lculate either gas or elect ricity statistics. v
printing of the display variable is to begin. (I used A VG: Per kilowatt or per therm cost.
Cll in the example.) Then, usc the algorithm in this B: Use with A when more than one key input from
paragraph to calculate the column where printing is keyboard is required.
to begin. The algorithm subtracts the length of the C: Used with A & B when three~key input
integer portion of the str ing from the value c al cu~ required from key board.
lated in step 1. [n other words, the colu mn where CAVG: Average monthly consumption of v
printing is to begi n equals the length of the integer kilowatts per degree day. Used only in subroutine
portion of the va riable subtracted from the column 6000 of Kilowatts. See explanation un der COAVG .
where printing is to end. That is expressed in BASIC CD: Cooling degree days in a given month . v
as ell ~12-LEN( STR $(lNT(X))). This means ther C DAVG: Average annual consumption of v
the first digit of the variable X will be displayed at kilowatts per cooling degree day. Used only in sub~
screen column 12 minus the length of the integer X. routine 6000 of Kilowatts because both cool ing and v
4. Position the cursor at the column and row heating degree day information are analyzed and
where printing is to begin. This is done with the printed at the same time. In Thermowans, this is not
POSIT ION statement . [n line 3180, the cu rsor is necessary because there is so much data that separate
positioned at column CL I ,row PEEK(84). printouts are required for cooli ng and heating degree v
PEEK( 84) is the memory location of the cu rrent day consumption. Consequentl y. a single varia ble
cursor row. Finally, use the PRINT statement to dis~ DDA VG ca n perform double du ty.
play the variable on the screen. O nce you get used to CDD1V: Total number of Kilowatts used when
this process, it can be done fairly fase. Of course, it co mputing annual average consumption of Kilowatts
v
VOL. 1 T HE A.N.A. L. O.G. COMPE N DIUM PAGE 103
per cooling degree day. Used only in subroutine KPD$: Used to represent either variable KPD or
6000 of Kilowatts. See explanation under COA VO. letters "N / A" when priming out results of
CDTOT: Total number of cooling days per annum. kilowattsltherms per degree day computation.
Used only in subroutine 6000 of Kilowatts. See LINE: Last li ne of DATA.
explanation under CDAVO. lOYR: Lowest year of data in data base
CL I: (Column I); Column where printing of spe~ M$: Month of data contained in DATA line.
cified data begins. Used to righHustify screen MINCO: Minimum number of cooling degree
display. days necessa ry for computing electricity consump~
CL2: (Column 2); Used with CLl when more tion per cooling degree day.
than I column cannot be r ight~just i fied in some MINHD: Minimum number of heating degree
other way. days necessary fo r computing gas/ electricty
CL3: (Column 3); Used with ClI and Cl2 when consumption per degree day.
more than two columns cannot be r ight~just i fied in NET: Cost of electricity without late charge.
some other way. NR: Used to calculate number of months in data
CL4: (Column 4 ); Used with CLl, eL2 and CL3 base.
when more than three columns cannot be right~ PRNT$: One PRNT$ string is created fo r each line
justified in some other way. of data to be printed with the line printer in sub~
routine 6000. Allows da ta to be aligned easily in
COST: Total annual COSt of gas or electricity.
DAYS: Number of days during billing period. columns wi thout using TAB functions which vary
from printer to printer.
DO: Used to represent either cooling or heating
degree days in subroutines where either can be used. R$: Represents month in subroutine 6460/ 6570
DDAVG: Average an nual use of Kilowatts or to compa re same month of d ifferent years.
therms per cooli ng or heating degree day. SET: Sets flag when high line of page print reached
DDN$: Used in subroutines 3cxx), S()(X), and 6O(X) du ring loop.
T: A flag. In Thermowatts, it is set during menu
to represent words "HEAT" or "COOL" in column
selection. It is used later in subroutines to identify
headings, depend ing on whether user has requested
whether gas or electricity data is to be processed. In
cooli ng o r heating degree day information.
Kilowatts, it is set at beginning of subroutines 3000
DDT: Total number of heati ng/ cooling degree
and 5000 to identify whether user has requested
days in a given year.
information on consumption per cooling o r heating
DIV; Total number of energy units used when degree day. This is unnecessary in Thermowatts
computing an nual average consumption per degree because the choice of desired information is implied
day. Used in subroutine 5000 of Thermowatts and by menu selection of electricty or natural gas data.
subroutines 5000 and 6000 of Kilowatts. TIME: Last line pri nted on pr inter.
FCTR: Estimated minimum amount of electr icity UNITS: Kilowatts used during billing peri od.
used monthly for uses other than heating or cooling. UP: Average daily kilowatt or the rm consump~
Subtracted from UNITS before computing con~ tioo.
sumption per degree day. Can be raised or lowered if USE: Total annua l consumption of gas or
estimated minimum is different. electricity.
GNET: Cost of gas without late charge. Y: Year of data on DATA line.
OUNITS: Therms of gas used du ri ng bi ll ing YR: Year of data being processed.
period. Z: Index variable for loops, i.e., keeps track of no.
HAVG: Average monthly consumption of of times loop has occurred. 0
kilowatts per heating degree day. Used only in sub~
routine 600 of Kilmvatts. See explanation unde r
CDAVG. Th e.-m o wa tt s
HODlV: Total number of kilowatts used when
II ? """:POI(E 82,'
computing average annual consumption of kilowatts 21 ., .. THEAMOMQTTS"
per heating degree day. Used only in subroutine 600 31 ? " GAS " ElECTAXCITv "
.1 ., "' AMAL VSIS PAOGAO ... · : ..,
of Kilowatts. See explanation under COAVG. 51 ., " IV J OE HAAB":"
HDTOT: Total number of heati ng degree days per 61 ? :? "'DURnn; OPEROlIOM OF THIS PAOC;
RoM, DO MOTDEPAfSS RfTUAM KEV OFTER TV
annum. Used only in subroutine 6000 of Kilowatts. PUG AMSNEAS TO PRO,.TS"
See explanation of under CDA VG. 71 OPf. Ul , 4,8,"K:":RE" OPE_ KfVBOARD
TO GET IMPUTS NNE. eET STATENEMT IS US
HIYR: High year in data base. ED THROUGHOUT PROGRAM
Hl: No. of lines to be printed on each page. 88 ? :? "DEPRESS AIV KEV TO COITIIUE."
: GfT 1I1,A:? "II;"
K$: Month (or which data requested in menu 1 •• DJM 01$("LA2$(6J,DDM$C.J,M$(lJ , K$
options A, B, E, and F. (3) , KPD$(6),PR.T$(65),A$(3)
I I I NI.CD=I":~.HD=2":FCTR=4":Rf" "
KPO: Average number of kilowatts or therms per I.CD=MIlIMU" COOL I.' DAVS KECESSARV FO
degree day. ACOtFUTATIOW
PAGE 104 THE A .N .A.l.O.G . COMPEN DIUM VOl. 1
67 •• KPD:I.'(l . . . . CH-fCTAJ/(CDD/l.)*Od
YSJ, 111 •• : 1,'0 5=5 TRS (I(PO)
6718 PAI,$C6-lEJI'STA$(XI'CUP)'J , 8J:STR
SCUP)
6728 PAI'$(17-LEI'STA$(X».16J:STR$(XJ
6738 PRI'$(25-LEICSTR$(II'(AIET))) 121)
=STAS U.'En
674. PRI'$(Jl - lEICSTR$(II'CAU')'),J4J=
STAS (AUG)
6758 PRI'$(41-LEICSTR$(DD) , •• ':STA$CD
.J
6768 IF I(PD=8 THE. PAIT$
(iOl0 61 ••
'e" 51) :"I/A":
677. PAIT$(48-lEICSTR$(II'CICPD»),51J:
STA$ (ICPDJ
6788 PRIIT U4;HS;" ";Vi'AIITS
67" TIME=TIME+l!IF TlNE:Hl 'HE' SET=1
6.8e IEXT Z: AESTOAE
6818 IF SET=. THEW 6858
6828 IF , AS:"'DEC" 'HEIII 686.
6U8 ? "I.SEAT .IOTHER SHEET Of PAPER;
'HEM DEPRESS All., KEY. to: GET SU, A
6'4' TlME=I:SET=8 : GOSUB '411
6858 LPRI., :TIME=TlNE+l:If TIME=HL TH
EI 6821 •
6868 RETURI
6'" REM IISTRUCTIOMS FOR PREPARIMG DA
TA LINES K il o waus
71 •• ? """:LINE=NR+'"
711. ? "FOR EACH NOMTH OF DATA YOU HAU
E YOU tlJST TYPE ONE DATA LINE.":?
7il. '? "THE FIRST DATA LINE ... ST BE IU l8 POKE 82.8
. . ERED ...... Z8 ., "1Ii:"- KILOWATTS"
7'll ? "AFTER THAT. EACH DATA LINE MUS I I ? .. ELECTJUCITY"
T BE NUMBERED ONE HIGHER THAN THE C. 1 " ANAL YSIS PRO'RA""
LAST, FOR" 51 ., " 8V JOE HAAB"
714. '? ·'EHA. . LE •••• MUST BE FOllOWED 61 1 ""DUAIN' OPERIHION OF THIS PROU
BY."., ."2, .'Il ....... ETC.":'? AM. DO NOT DEPRESS RETURN KEV lIF
7158 ? '"DEPRESS ANV KEY WHEN READV FOR TEA TYPU' ANSWERS TO PROMPTS . "
NEMT INSTRUCTIONS . ":GET IU , A 78 OPEN IU. C, 8. "K:": REM OPEN KEYBOARD
..717. ? "1'" DATA OCT . S2.13S8.3I,7' . 2S
71'1 ? "REGUIRED FORMAT FOR DATA LIIE: TO GET IIPUTS LATER II PROGRAM WHEN C
ET STATEMENT IS USED
88 ? : 1 "DEPRESS ANV KEY TO COITINU[."
, .. I . lS . 2I,67S '" :'ET IU , A
7"8 '? "DATA t TEMS liRE:
1.,.
15."
?
II
"I. NOITH; MUST BE 3 LETTERS LO
,. DIM DDN$(C'.M$(l),K$(3),KPD$(6' , PRI
TS (65', R$ (3)
188 KlNCD=188:KlNHD=2,, : FCTR=C.8:REM M
7118 '? "2. VEAR; MUST BE 2 NUteER'S LOI IICO=MIlIHUM COOLIN' DAYS NECESSARY FO
G. " RCOMPUTATION
7118 ? "3. IUteEA Of KILOWATTS USED DU 118 REM NIIHD=MYNIHUM HEAT II' 'E'REE D
RIIG ,..,IT"" AYS NECESSARY
7128 ? ..... IUteEA Of DAYS II BIlLII' P 128 REM fCTR=IR. OF KILOWATTS TO BE SU
ERIOD" BTRAClED fROM MONTHLY KILOWATT USE WHE
7U8 ? "5 . lET COST Of ELECTRICITY II N COMPUTIN' DEGREE DAYS .
BILL IN' PERIOD. DO NOT USE '$' BEfOR 138 REM SUBTRACT IN' fCTA REDUCES EMTE.
E COST . " T TO WHICH OTHER HOUSEHOLD ELECTRICITV
7 ... 1 ? "'. lUMBER Of THEAw.; USED DUAII USE BIASES HEAT IN' AND COOLIN' STATS
G BILL II' PERIOD . " 2.1 REM CALCULATE: TOTAL ~ITHS Of OAT
715. ? "7. lET GAS COST DURIle; DIlLII6 A CIA); LON YElIA Of DATA CLOVAl ; AND H
PEAIOD." I'H YEAR Of DATil (HIYR)
7168 ? " S. HEAT II' DE'AEE DAYS II BILL 218 IR =I
II' PEAIOD . " 221 AEAD M$,Y.UNITS.DAYS,I£T.HD,CD
71.11 ? .. , . COOLllSO DE'REE DAYS II BILL 238 REM M$=...,ITH. V=YEAR , UIITS=KILOMA
IN' PERIOD." TTS USED USED IN BILLII' PERIOD
7188 ? "THE LAST LINE OF DATA YOU ENTE 2C8 REM DAYS=IR . Of DAYS II BILLI.' PE
RED MAS: ";LIIE RIOO
7.,. ? "10M BEGII TYPIIG lEN DAlA LIIE 258 REM IET=COST Of ELECTRICITY WHEN 8
S ." ILL PAID O. TIME.DD=DE'REE DAYS DUAIN'
BILLIIG ""ITH
• 268 REM HD=HEATII' DEGREE DAYS
27. REM CD=COOLII' DEGREE DAYS
28a LOYR=Y:AESTORE
C H ECKSU M DATA 2" READ M$.Y.UIITS,DAYS,IET , HD , CD
3.8 If 1'1$ ="[10" THE I AE STORE : 'OTO 2 ••
(See pg'_ 7- 10)
•
318 MA=IR+1 : HIVA=V
328 GOTO 2,.
,'S REM SUSROUTIIE TO 'ET IIPUT fOA ME
NU OPTIOIS A & 8; THE_ CLEAR IIPUT OUE
5TIOIS fROM SCREEI TO AllOW DISPLAV
.. " REM Of ADDITIO_Al DATA
S.. ., " IIjTYPE fIAST THAEE LETTEAS Of MIl
NTH YOU MAMT.":'ET #I . A:&ET Ul . B: GET
al . c
5.8 REM IEMT LIIE COIUERT S ATASCI UALU
ES TVPED ON kEYBOAAD TO A STAll'
5 t 8 K$ =C HA$(A) : K$ (LE_'K$J+ l ' =C HR$'BJ:K
$(LE _'K $ ' +IJ =C HA $ ( C) :G OSUB SJ 8 : AET UA_
VOL . 1 THE A.N.A.L.O.G. COMP ENDIUM PAGE 107
'"2860
2878
'I
'I
" F . EKIT PROGRA"": ?
"TYPE lETTER OF OPTION YOU wan
5118 IF 4=67 THEN DDNS:"COOL":T= 8
5828 If 4=72 THE. DO.$:""£AY": T=1
5138 ? f. ";DDNS;"
. ":GET IIl,A AUG ktMTT":RE" 22 SPACES BEFORE DON
28e8 RE" GET IS USED TO OETER~lIE lETT $
ER TYPED Oll KEYBOARD; A=ATASCI UAlUE 0 5_48 '? "VEAR IeMATTS DGAEE P
F LETTER TYPED EA OGREf": REM 18 SPACES BEFOAE OGREE
28'9 IF A=65 THEN 3888 S85e '? " U~EO COST DAYS D
2180 IF 0:66 THEli 48.8 AY"
2118 IF A=67 THEli 58.8 5868 USE=8:COST=8 : DOT:8 : 0IU:8
2128 IF 0=68 THEN TRAP 2161:0PEN aA,a, 5878 FOR l:1 TO lIR
I,"P:" : TRAP 18808:GOTO 6888 5188 READ MS,V.UlIITS.OAYS,NET.HO,CD
2138 IF 0=6' THEN 7888 5.'8 IF Y()YR THEN 5148'
2148 IF 0:78 THEli POKE 82,2:ElID SIll IF T:I THEli DO : CO:IF CO(:MINCO TH
2158 GO TO 2878 EN OD=8:GOTO 5138
2168 REM PAINTER EAAOA MESSAGE 5118 IF T=l THEli DO =HO:IF HO(=MINHD TH
2178 CLOSE IU: '? "PAINTER IS NOT ON-LIN EN OO=O:GOTO 5138
E ,[Jo': TAAP 18818: GOTO 2178 5128 OOT=DDT+OD:OJU =DIU+UlIrTS-FCTR
2'~' AEM SUBAOUTINE FOR NENU OPTIOli A 5J38 U~E=USE+UlIITS:COST = COST+NET
3188 GOSUB 588 5148 lIEHT l : AESTOAE
3810 ? "DO YOU won TO INCLUDE INFOAMA 5158 OOAUG:_:IF DOT)8 THEli ODAUG:tNT(1
TJON Oll HEATIlIG(K), COOLING(C) OR liE 88*OIU/Don/18e
ITHEA un '?": GET 111. A: liosua 538 5168 Cll:17 - LElieSTR$eJNTCCOST)'):CL2:2
3820 IF A:67 THEN DDNS:"COOL":T:8 6- lEN(5TA$(IlIT(DDT))):CL3=31-LElI(STA$(
3838 IF A=72 TKEN DDNS:"HEAT": T=1 In (ODAUG)))
3840 IF A=78 THEN DONS =" ": T=2: DD=I 5178 ? YR+1'18;" ";USE;" "; :POSITIO
38se ., "MOnK TOTAL AUG TOTAL A II CLl i PEEK(84, :? COST;:PosrTIOI CL2.PE
UG kWU" EI(84':? DDT;:POSITIOli eL3,PEEK(8'"
3860 ? " KWU DAIL Y DGREE P 5188 '? OOAUG
fA "; DONS: AEM 8 SPACES BEFORE kMU 51'0 YR=YA+l : IF VR(HIYR+1 TKEN 5868
1878 '? to KNlI USE DAYS D 5288 AESTORE
GREf DAY": REM 14 SPACES BEfORE kNll S2l8 '? :? "DEPRESS ANV lEY TO RETURli T
38e9 FOA l:1 TO NA o MENU.":GET IIl,A
38'0 READ MS,Y,UNITS.DAYS,NET,HO,CO 5228 GOTO 2888
3118 IF MS()kS THEN 3281 5'" AEM SUBROUTINE fDA MENU OPTION 0
3110 UP:INT(I ••*U.ITS/OAYS)/188:RE" CO 6180 THtE=l: SET:e:? "'HYPE lIUMBER OF l
HPUTE UNITS PEA OAV AND LIMIT OECI~L IllES PEA PAGE TO BE PAIN'ED.":GET
PLACES DISPLAYED IIl,A:&ET D1.B:HL = ((A - 48)*I')+(B - 48'
3120 IF T:I THEli DO:CO:IF CO)MIliCO THE 6818 lPRIliT CHR$(27);CHA$(56):RE" OISA
II GOTO 3158 IIlE EPSON "END OF PAPER" fUliCTIOli
3130 IF T=l THEN OD =HD:IF HD)~NHD THE 6828 ? IU;" TOT
II GOTO 3158 Al AUG TOTAL AUC": AEM 2" SPACE S
314ft IF T=2 OR CD(:MINCO OR KO(=MINHO BEFORE TOTAL
THEli kPDS:"N/A":GOTO 3178 6838 ? 114;" HEO
3150 KPD=IlIT(II.*(UliITS - fCTR)/((DO/38) T KNATT COOL IWATT" : REM 24 SPAC
*OAYS))/108:KPO$=STR$(kPO):AEM COMPUTE ES BEFOAE HEAT
UNITS PEA DEGREE DAY 6148 '? aA;" KWATTS TOTAL DGA
3168 AEM LINES 3178-31' 8 USED TO ALI'li PER DG. PEA": AEM 8 SPACES
AND PAIliT SCAEEN DISPLAY BEfORE IeNATT
3170 CLI:12-LEN(STASCINT(UlIITS,),:CL2= 6850 ? IU;"YEAR USED COST DAY
17-LElI(STA$(INT(UP))):CL3=26-LElI(STA$( S DCA DAY DAYS DGR DAY":LPRIliT
DO)' : CL"=32 - lEli (STRS (lliT U(PO))' 6860 TIME=TJME+5:YR =LO VR
3180 'I KS;" ";Y; :POSITION CLI,PEEK(8'" 6170 USE=8:COST=I : CDoJU=O:CDTOT:8:HDDI
:'? UlIJTS;:PO~ITION CL2 l PEEK(8"):? UP; : U:I:HDTOT=8:COAUG=I:HOAUC=8
POSITION CL1,PEEK(84):? 00; 6880 AEM CDDIU & HDDIU ARE NUMBER OF A
31'0 POSITION Cl".PEEI'8"' :? IPOS NNUAl KILOWATTS FOA HEATIlI' & COOLIN'.
3288 NEXT l:AfSTORE ONLY MOliTHS WITH MORE TH6. 188
3210 ? :? ,,~O YOU NAIT TO LOOk AT AllOT 61'8 AE" COOLING OR 288 HEATING DEGREE
HEA NONTH ? TYPE Y OA lI , ": GET Dl. A DAYS AAE INCLUDED . 588 KNATTS PER MON'
3228 IF A=8' THEN GOSUB 538 : GOSUB 588: H SUBTAACTED BY FeTR FOR OTHER ELECT.
GOTO 3088 6188 REM CO TOT & HOTOT ARE TOTAL HEATI
3138 'I " "":&OTO 2188 KG/COOLIN' DEGREES PEA 6l1l1UM FROM MONT
3'" AE" SUBROUTIliE fOA MEliU OPTIOli 8 HS MITH SUfFICIEliT DEGAEE DAVS
"'88 GOSUB 588 6118 PRNT$:"
4818 ? "MOliTH TOTAL TOTAL UliIT"
4828 'I .. kMU COST COST" ":RE" 65 SPACES
:RE" , SPACES BEfORE KWU 6128 FOR l=1 TO lIR:REM CALCULATE AliNUA
'838 FOR l= l TO IR l CON~UMPTIOli AliD C05T
4."8 READ MS,V,UNJTS.DAVS,NfT,HD,CD 6138 AEAO MS.Y . UKYTS.OAVS.NET.HO.CO
PAGE 108 THE A.N . A.L. O . G . COM PEND IUM VOL . 1
..
6418 ? U4 ; " ICMATT ICIIATT COS 78'8 ? " 1 . MOIfTH; ... ST BE 3 LETTERS LO
T PEA DC;;RE OGRE NG"
O'RE OGRE
" : TIIE=TI":+l : REM 8 SPACES 8E4 ICMATT
6448 ? " ; " U5E " ,..
7118 ? " 7. YEAR; MIIST 8E 7 lUMBERS LON
7118 ? " 1 . NUMBER OF KILOMATTS USED I I
IC", DAYS DAY DAYS DAY"
: lPRllfT : TlME=TlME+l : AEM 8 & 13 SPCS MONTH"
6458 AETURI 7128 ? .. 4. NUMBER OF DAYS IN BILLING P
6.68 R$=" JAIf" : GOSUe 66 •• ERIOD"
647. RS="'fE8":GOSUe 66 •• 7138 ? " 5 . lET COST OF ELECTRICI TY 1M
648. R$="*Ro, : c;;osue 66" BILLUG PERIOD"
64'8 R$="APR" : c;;osue 66 •• 7148 ? "6 . HEATII .. DEGREE DAYS I N BILL
658. R$="""Y"':'OSUI 66" IIC;; PERIOD"
651 8 R$="JUI" : GOSUe 66 •• 7158 ? " 1. COOLING DEGAEE DAY S I I BILL
657. R$=" JUL "': c;;osue 66 •• II' PEAIOD"
6518 A$=" AU''' : GOsue 66 •• 7161 IF LINEO", THEN? "'LAST LI NE 0
654. A$="SEP":'OSUI 6681 f DATA YOU ElfTERED MAS : " ;LIIE
6558 R$="OCT":GOSU8 668. 7178 ? "'NON BEGIN TYPING MEN DATA LIIf
6568 R$="IfDU":GOSUB 66 •• ES . "
6518 R$ ="OEC":GOSUB 66 •• 7188 END
658a CLOSE 114:! "~": GO TO 7 •••
66 •• fOR Z=l TO IfR:REM CALCULATE MOITH
LY COISUMPTIOI AID COST •
661. READ MSLYLUlfXTS,DAYS,IET,HO , CD
6678 HAUG=' : ~AvG=a C H ECKSUM DATA
661 8 If MS(>A$ THEI 68 2. (See pgs . 7-10)
6648 ? " ' MS; " ";Y ;
6658 PA.T~="
": REM 65 SPACES
6668 UP=IlfTtl ••*CUlfITS/DAYS,) / l.8
667. PANT$C6-LENCSTR$(IITCUP))) , 8)=STA
$ (UP)
6688 PRIT$C I 5 - LEICS TA$CUIITS'),14)=STA
$ CUlnS)
66', PRlfT$C 72 - LElfCSTA$CIlfTCIET1)),2.)=
HA$(IEn
61,. AUG=tIT(1.'8*CNE1/UIITSJ)/t,.1
6718 PAIT$C 78 - LEIf(STR$CI ITCAUG)J) ,11)=
'HAS (AUGJ
.,
61 29 PRIT$Cl'-LEIC 5 TA$CHO'), 3 8J=STA$CH
6138 IF HO)MINHD THEI HAUG=IlfTC181*(CU
IITS- FCTR,/HD)'/l •••
6748 IF "AuG=. THEI PRIT$(47 , . " ="I/A"'
:GOTO 6768
6758 PANTSC.3 - LElfCSTR$CllfTCHAUG')J , .6)
=STR$ (HAuC;;)
.,
6768 PRIT$(53 - LEICSTR$CCO)) , 57)=STA$CC
617 8 IF CD)~.CD THEW CAUG=II'Ct . . . (CU
IfITS-FCTRJ/ CO)) I t •••
VOL . 1 THE A.N .A.L.O .G . COMPENDIUM PAGE 109
.
~
Snowflake Demo
to REM
78 RE"
*** SNOWFLAKE GENERATOR
•• RE"
.1
51
REM BY TOM HUDSON
REM SET UP GAAPHIC S HODE , COLORS
ti. RE"
7. GRAPHICS 8+16 : SETCOLOA 2,B,8 : COLOA
1
88 RE"
'I REM SET UP DEGREES , K AND V TABLES
188 REM
118 DEG :DI" DCI81,K(I'1 , VC181
128 REM
138 REM RANDOMIZE SHAPE
UI REM
151 fOR 1:1 TO II:DCI)=I:KCI)=RID(8).8
' : YCI)=RND(8)*I*':NEKT I : POKE 77, 1
168 REM
1 78 REM ECHO AND ROTATE SHAPE
188 REM
1'8 PLOT 168,'6 : fOA 1=1 TO 18:DRAMTO 1
68+CKcI)*COS(DCI))+Y(I).SINCDcIll),'6 t
c- KCI1*SIMCDCI))+YCI)*COSCDCI)))
288 DCI1=DCI)+68:MEKT 1:lf D(I)(168 TH
EN 1'8
218 fOR- I : l TO 18 : DcI):8 : NEKT I
228 PLOT 168,'6:fOA 1=1 TO 18 : DAAMTO 1
61+ CX (I)*cOS CD (I)) - Y(Il*SIN (D (1)'1, '6+
C-KCI)*SINCOcI" - V(I)*COSCDCI)))
238 DCI) =DCI)+68:IEKT I : If 0(1) ( 368 TH
EN 228
2(1 AEM
258 REM LEAUE IT ON SCREEN A WHILE
268 REM
218 FOR DELAY:l TO 58 •• :MEKT DfLAY : RUM
PAGE 110 THE A.NAL.O.G. COMPENDIUM VOL. 1
TYPINCi TRAINER
T y ping T rainer utilizes color, graphics and (using FLAG as a counter), all A(J)s are reset to zero
sound to help a student practice typing sentences for so the sentences are all available for use in the next
accuracy. There arc 40 different 30·stroke sentences drill (Line 180).
that arc chosen randomly for the d rills. Each drill To avoid the possibility of the stud ent "c rashing"
consists of ten different sentences. the program during responses, an INPUT p rocedu re
A sentence is shown on the screen. The student is avoided. Instead. the p rogram looks at what key is
types and enters it. If it is incorrect, an "uh·oh" pressed by using B= PEEK(764). Yes or no responses
sounds and a "wrong" score is posted. The student are received by the student p ressing "Y" or "N".
has time to review the sentence before continuing. If Any other key pressed is ignored.
the typed sentence is correct, a "Tighe' score is When sentences are typed, the characters are
posted, a train whistle sounds, and there arc two p rinted as each key is pressed until "RETURN" is
blasts of steam from the engine's smokestack. p ressed (which indicates the student is finished typ~
The running total score is displayed on the sc reen ing the sentence). The control keys or SHIFTing are
after each sentence. After tcn sentences, the final not allowed, si nce a typist practici ng sentences
score is displayed and a tune is played. should not backspace and type over letters, nor type
Following each drill of ten sentences, the student capi tal letters in the middle of the sentence (actually,
may choose whether to try again or not. If "N" (or the student types all capita l letters in the standa rd
"no" is entered, the program ends. If '' Y'' for "yes" computer mode but does not S HIFT ). If a control
is entered, the drill is repeated with ten different key or S HIFT is pressed, an asterisk is printed in that
sentences. Each drill chooses the sen tences random~ cha racter position of the stude nt's se ntence.
Iy, and the drill may be perfo rmed four times with~ To avoid sc rolling, the student is permitted to type
our sentences being repeated. After that, the sen~ only 34 cha racters in the sentence (Line 2005). The
tences are all available fo r four more drills. The drills student's sentence is compa red with the given sen ~ v
will be different each time because the sentences are tence either after "RETU R N" is pressed or after 34
chosen randomly. This p rocess continues as long as cha racters have been typed. 0
the student wishes to continue.
Programming techniques.
ATARI does not allow arrays of string variables, Explanation of t he p rog ram.
so an array of sentence numbers is used. The sen~ Variables Used
fences arc numbered I through 40, where J is the J Sentence number.
number. Initiall y, all A(J)s are set to zero. After a AU) =0 fo r available S<'n tence, = I if sen~
semence is used, AU)= 1. rence has been used.
To print a sentence , fi rst a number J is chosen as a FLAG Counter for number of times drill
random integer (rom I through 40 (Line 220). If is performed.
AU)= I the sentence has been used before and may WS Wrong score .
not be chosen again, so another J is chosen (line RS Right score.
230). If A(J )= 0, SEN$ is set equal to thchh sentence PROB COll nter fo r number of sentences.
and the program branches to the drill (Lines 232 ~ R - 1 if sentence is typed correctly,
250, 4000 ·4390). = 0 if sentence is typed incorrectl y.
After the drill has been performed four times D Counter in delay loop fo r SOUND.
'-" VOL. 1 THE A.N.A.L.O.G. COMPENDIUM PAGE 111
JZ8 PRIll' : PRnn AS;" RIGHT", NS;" WADI 4880 SEI$:"HE DID SEEK AID fOR THE TRU
GOO CK.":GOTO 1'88
338 If R=l THEil 345 48'0 'SEI$: "CHECK THE PAPER fOR AMY I..aR v
348 FOR D=1 TO sa8:IIEXT 0 K~ . ":GOTO 1'88
345 FOR 0:1 TO 588:NEXT 0 41.8 ~ElIS:"JT I'S THIS DE'SK fILE HE SEE v
358 A(J):l K~.":GOTO 1'8'
ISS PAIl' : PAIIIT : PRIII' 411. ~EN$:""E KNONS HE .... ~T KEEP WORKI
368 NEXT PROB N'." : GOTO 1'"
378 ,osua '880 4128 SENS: "ME WOULD GlUE HI" A 6000 Mal
" . GRAPHICS • GE.":GOTO n ••
418 PAIIT :PA11I1 :PRIII' 4138 'SEM$:"BRING ALL BOOK~ TO THE TAU
US PAIIT "DO YOU WAn TO TRY AG.uN?" ES.": GOTO U"
438 PAIIIT :PRIII' "PAE'i'i 'Y' fOR YES" 4148 SEII$:"I HOPE THAT TAH OOE~ NOT P~
'48 PRIll' .. .... FOR 110" S~.":GOTO 1'"
458 8=PEEK(764} 4158 SEiIS:"GRE' 8ROU'HT IN A LARGE CHE
461 IF 8=43 THEil 88=1:&010 4" CK.":GOTO 1"8
47' IF 8=35 THEil 88=8:,010 " 8 4168 ~EN$="IT IS UP TO THEM TO WORK HA
4aa ~OTO 458 RO.":GOTO 1'"
4" SQUID 8,23,18,8 4118 'SEM$:"PUT A LITTLE ttORE EffORT HE
4'2 fOR 0=1 TO 18:IIEXT D
". 50UIID ',8,18,8
RE.":GOTO I'"
4188 ~EI$:"H~UE ~ 'OAL; WORk TO REACH
.'5 POKE 764,255:8=255 IT.":GOTO 1'88
"6 IF 8B=8 THEil " , 41'8 SEI$:"CIIlL 'LAD O~DS HAD A GLASS J
51.
518
PAIIIT """
flAG:FlAG+l:IF fLAG=! THEil 188
AR.":GOTO I".
4288 'SEI$:"IT IS HOW IoE WORk TH~T COUN
531 GOlD 282 T'S.":GOTO 1'88
" , EIIO 4218 SEN$:"TO" MA'S QUICK TO ~E.O THE 8
1'8. FOR 1=8 TO 63 Ok.":GOTO 1". v
1818 READ C:LCI}:C:IIEXT I 4228 SEI$:"REN WILL HAUE HIICH MORE TO
18'0 DATA 76,74,5'.8,8,75 , 43,42,7',8,8 OO.":GOTO 1'"
8 , 85,.,73,4S L61 L86,.,67,. , .,66,88"a,5
2, •• 51.5 •••• :'3.:, • .
1858 D~T~ 4'.44.32.46.78.8.77.47 L I.82.
E".":GOTO I".
4238 SEI$:"I WILL liD TO TO~ TO GET TH
4248 SEIS:tlHE C~M LENO A HAlO TO THE D
8.6'.8'.1,84.87,81.57.1.48.55.'.:'6.61, OY.":GOTO I'•• v
62178,72~68.8.8.71.81.65
18b8
1'8e
ETuRI
POKE 764.755:B=255
Rk.":GOTO I'.'
4258 SEIS:"I PAID THE MEN fOA THEIR NO
4268 SEIS:"THE WORkER SAID HE 'STRUCk 0
1 "5 PAIIT ~EIS IL.":GOTO 1'"
1'18 ~OUIO 8.47.18.14 4218 SEI$ : "~HE ~AID ME .EED A NEW CA . .
1'28 FOR 0=1 TO 61:IENT 0 ER." : GOTO 1'8.
1'38 ~OUND 8.8 18,' 4288 ~E.$:"I 80UGHT THE 81G DOH OF 800
2188 OLOB=-I:T~="":OPEN IU.4.8,"":" kS.":GOTO 1'8.
21.5 FOR 1=1 TO 34 42'8 ~EI$:"ME 'SHOULD 'SET A GO~L FOR TH
2818 GET Ul.8:IF B=155 THEN 74" E".":GOTO 1'8'
2828 If 8)'6 THEI c$=".":GOTO 2.65 41'8 SEI$:"TRY TO TYPE ALL THE BI' WOR
7868 CS=CHR$(B) OS.":GOTO 1'"
7.65 PAINT CSj:1$(LEI(TS)+I)=CS 4318 ~E.$="WE ItAY QUIT THI~ WORk AT fI
2888 IEXT .. UE . " : GOTO l,e.
2"0 GO TO 2488 4328 'SEN$:"YOU HAUE TO WORK fOR TWO OA
21.8 1=INT(PEEK(53775)/4):IF (I/2)=IN1 Y~ . ":GOTO 1'"
(J/2) THEI 2818 4338 'SEN$="1RY TO GET DIE DR TWO Of TH
2118 POKE 764,255:0LDB=-1 E" . ": GOTO 1"8
2128 GOTO 2818 4340 SEI$:"YOUR BEST ttEN WILL HELP DO
2488 CLO~E Ul IT." : GOTO 1'"
241' IF T$=~EIS THEM R=I : GOTO 258. 4358 ~EII$:"HAUE THE DOY'S DO THE WORK II
ms mu..
388' fOR 11=1 TO 2
O..... :GOTO 1"8
4368 ~EII$:"LET HI" PROUE THE RIGHT THI
.'.":GOTO 1'88
3818 ~OUND 8,58,18,14:~OUID 1 , 63,18,14 4318 ~EN$:"THEY SHOULD RE~D NY GOOD BO
3825 COLOR 2 OK . ":GOTO 1'88
3838 GO~U8 3588 4388 SEN$:"~HE CAM DO ~ 8IIi JOB THE BE
3848 FOR 0=1 TO 188 : NfHT D ~T.":GOTO 1'88
3858 ~OUMD •••• 18 •• : ~OUND 1.',1',' 43'8 SEN$="DAUE MADE ~ CAGE fOR HIS PE
3878 COLOR ':GO~UB 3588 T~.":GOTO 1'8.
3"8 NEXT II:RETURN 5888 GRAPHIC~ 1 : COLOR 1
35.8 PLOT 121.3 5.85 COLOR 1
3518 PLOT 175,14:DA~NTO 126.1' 5818 fDA Y=28 TO 25
3538 PLOT 124,14:DA~WTO 125.8 5.28 PLOT SS.Y:DRANTO 88 , Y
3558 PLOT 123.14:DAANTO 123,8 5848 NEXT Y
3578 PLOT 122.11:DRAWTO 121,4 5.58 fOR Y=26 TO 37
35" RETURI 5868 PLOT 68.Y:ORANTO 65,Y
4888 ~E.$=·'HE fEEL~ ~HE HA~ A ~AfE LEA 5888 PLOT 83.Y:DRANTO 88.Y
~E.":GOTO 1'" 5188 NEHT Y
4.18 ~EIS="ANDY HII~T GIVE "" BAlD A HA 5118 FOR Y=38 TO 58
10.":60TO 1"8 5128 PLOT 68,Y:DRAWTO 118.Y
4828 ~EI$="~HE I~ ~TIlL ~T THE LAKE ~I 5148 IIEHT Y
TE.":GOTO 1'01 5158 FOR Y:34 TO 31
"838 ~EMS="THEAE I~ A QUICK OUIZ fOR H 5168 PLOT ,7.Y:DRAWTO 183.Y
I".": GOTO 1'18 5188 NEXT Y
.. U8 ~E.$:"JU~T ~OttE Of us HAUE TO DO 51" PLOT '8,33 : DIAWTO 1'2,33
IT.": GOTO nIl 5218 PLOT 18.,32:PLOT 122 , 38
4858 'SEN$:"TWO OF THE GIRL ~ ARE HERE N 523. DRAWTO 118,18
OW . " : GOTO nee 52 ... DR~NTO 122,15
4868 SE.$ : "J~IE STARTS HEA T~LK AT THA 5258 OA~M10 126.15
EE." : 60TO 1'88 5 268 DAAWTO 138.18
4818 ~EN$:"TRY MOT TO LOOK AT YOUR HAN 5218 DAAMTO 126.38
D5. II :GOTO 1'08 5 289 COLOR 2
v
VOL . 1 THE A.N.A.L.O.G. COMPEN DI UM PAGE 113
17,14~,524,471,141,51,,147,522,6747
~
7278 DATA 156.525.54 L 528 L I54 L 523 t S',52
5.151.521,157 , 528 , 51b,2'b,48~,S'a2
7.78 DATA 4'1,4'1,812,56,58'L'6't671,4 ~
',15',4'4,5'8,861,714,421,42~,78B'
8188 DATA lSS,S'IL773tI86t358,573t.'4, v
713,882,126,223,2/8,2~1 , IH5,'61,6a25
'888 DATA 883 , 883 v
• ~
v
V
C H EC KSU M DATA
(See pgs. 7· 10)
18 DATA 137,7',188,3'3,",287,3".111,
225 , 758,2587
VOl. 1 THE A.N.A .L.O.G. CO MPENDIUM PAGE 117
v
v
MOTORCYCLE
MAZE RIDER
......., 16K Cassette 24K Disk
V by C h arles Bachand
V
Maze Rider is a game in which you roar through a down, left and right, looking fo r an unused space. If
twisting maze of tunnels o n a motorcycle. Yo u are the program detects such a space around the cu rsor,
hindered in this feat by the fact that your viewpoint the maze drawing proCl'SS is turned back on. The
is from inside the maze. The display is your wi ndow cursor continues to advance and retreat unti l it
into the maze. bu mps into its origin. 0
In o rder to play Maze Rider, a joystick must be
inserted into port #1. After typing RUN the Line Explanation
program will initialize and generate an introduction
100-640 Generates maze
screen. The program will ask you to respond to
640-830 Draws maze interior
questions about game options. T he first q uestion is
"Do you want to leave a tram" If the answer is yes, 840- 1060 Main program routine
the game will display a line on the ground where you 1070- 1110 End of game.
11 20-1130 Draws map o f maze
have previo usly traveled. The "Extra Passages"
option will add more interconnecting passages to the 1140 Draws outline of maze
II S0-1230 Title and options select
maze. The map option allows you to see a map of the
maze displaying an overhead view of the game area. 1240 Perspective view data
Motorcycle noise can be eliminated in the last option
if desired.
Pushing the joystick forward will move you lao
118
REM ***MOTORCYCLE ~ZE RIDER
REM * COPYRIGHT 1'80 C.BACHAND *
***
forward within the maze. Pulling back on the joystick 128 REM
will make you move backward within the maze. 110
148
REM
REM
*** FOR ANALOG MAGAZINE ***
Pushing the joystick to the left or right will change 158 TOP=PEEK(1861 :SWITCH =O
the direction that you are facing. Pushing the joystick 168 GOSUB 11S8:GOSUB 11~0
to the left will make you turn in a counter clockwise 178 PRIMT "U** GENERATING MIllE GRID *
direction and pushing to the right will make you *"
189 HC =INT(RNDCll*((NIDTH-11/2)1*Z+ 1
turn in a clockwise direction. If the map option has 1'8 YC =INT(RND(8)*(CLENCTH -1 J/ 2 Jl*Z+1
288 EM=XC:EY =YC:XPNT=1516 : YPMT =1612
been enabled, pushing the joystick trigger button 218 SElCOLOR 1,8 , 14
will display an overhead view of the maze for about 228 COLOR 2:PLOT XC,YC:COLOR 1
2JO LN' =I NTCRND(OJ*31*2+2
ten seconds. 248 DIR =IN1CRMDC01*4]
For the technical types out there who are 250 S= (DIR=Ol-(OIA =l)
v interested in how things work , the maze in this game
260 T=CDIR=21 - CDIR=3]
218 FOR 1=2 TO LNG STEP 2
v is generated using a modified random walk ro utine 288 LOCATE XC+S*I,YC+T*I.P
2'8 IF P AND 1=2 lHEN POP :C010 218
that Stores the X and Y locarions it has traveled to leo IF P THEN POP : LNG =2:G OTO 258
into two tables. which are stored on page six of the 1 10 NEXT I:XC =XC+S*LNG:VC =VC+T*LNG
328 IF PNTR ) PMAX THEN PMAX=PNTR:HM =MC :
computer's memory. As the cursor walks along, MY=YC:MS=S:MT =T
generating the maze, the X axis is stored at XPNT+ 311 DAAWTO HC,VC:PNTR =PNTR+l
3 48 SOUND 8,D2 - PNTR*8 ,1 8,B
PNTR. The index variable PNTR IS then 358 POKE HPNT+PNTR,HC
incremented by one. This operation conti nues until 368 POKE YPNT+PNTR,YC
378 COSUB 6eO:IF P THEN 3'0
it runs into a dead end. At this point the program 388 SOUND 8,D2 - PNTR*8 . 1e,2 : COTO 218
starts backtracking back to its origin. The index 3'8 XC =PEEKCXPNT+PN1R]
488 YC =PEEkCYPN1+PNTRJ
va riable PNTR is decremented by one and the last X 418 PNTA=PNIA - l:GOSUB 6e8
and Y coordinates are pulled from their locations in .28 SOUND 8,DZ - PNTR*8,18.8
.19 IF P AND PNTR THEN 1'8
page six. The program then does LOCA YEs up, "9 POKE 17.Z:S0UNO 8 . 02- PNTRM8 . 18 .2
PAGE 118 THE A.N.A .LO .G . CO MPENDIUM VOL. 1
v
458 PLOT XC,YC : If PNTR THEN 238 "8 If P=14 THEN KX=~+S : KV=MY+T :S OUND
468 COLOR 3:PLOT KX , MV :COLOR 1 1,128,6 ,S NO*6:lf NOT PEEKCMAP+HY*48+
478 ~p = aORCKOP$':If I - EXTRA THEM 538 MX) THEN KX=MK - S:KY=HV - T : P=O v
480 FOR 1 =1 TO 25 1888 IF P =13 THEN MK=KX-S : MY =MY - T:SOUN
4'0 XC =INTCRMDCO'*(WIDTH - 4»)+3 o 8,128,6 ,S NO.6 :If NOT PEEkC~P+MY.48
50e YC =I NT(RNDCO)*CLENGTH - 4J)+3 +MXl THEN KK =HX+S:HY =HY+T:P =O
518 Y= (XCtY C, /2:I F IITCY) =Y THEN 4'0 1818 IF P=l OR P=ll THEN P1=S:S=- T:T=P
520 PLOT XC , YC:ME XT I 1
530 SOUND O,O, 8 ,O:fOR Y=l TO LENGTH 1828 If P=11 THEN S=- S:T:-T v
540 fOR X=l TO WIOTH : LO CATE X,Y,P 1838 If P=O THEN PRIMT "iii' •• CRASH! ! ": F
558 POKE HAP+Y* 48+X ,P: NEXT X: NEXT Y OR P=1 5 TO 8 STEP - 1:S0UIO 8,128 ,12, P :
568 S=- MS : T=- HT: HS=8:F OR 1=8 TO 6 fOR 1 =1 TO 5:NEXT I:NEXT P:P=8:MS=8
578 READ K:P OK£ KPN'+I,X:NEXT I:P3=8 1840 I =HAPtMY*.e+MX : lf PEEKel, =2 THEN
588 YPNT =XPMTt8:POK E YPNT - l ,7' 1818
5'8 fOR 1=8 TO 6:PO KE YPMT~I ,]'-'P f EK ' 1858 POkE I,3:IF P THEN 848
KPN'+I)tPE EK(KP N' +I - l]) / 4:NEKT I : GOTO 1860 GOTO "8
•••
688 LOCATE KCt2 , YC,Pl
1070 PRINT "1Ii,t***** YOU ARE FREE
* ": FOR X=1 TO 5:FOR Y=288 TO 9 STEP - 4
****
618 LOCATE XC- 2,YC,PZ 1888 SOUND Z, Y,18,K*3:NEXT Y: fOR 1 =1 T
6Z8 LOCATE XC.YC+Z ,P3 o 4 : PLOT RNO(8)_15' , 8:0RAWTO RND(8).lS
63e LOCATE XC.VC - Z, P4 ',7':NEXT I:HEXT X:S OUND Z,Z,Z,Z
648 P=Pl AND P2 AND P3 AND P4 :RE TURN 18'0 POKE 186,TOP
658 Pl =8:GRAPHIC S 6:SETCOLOR l,e,14:PO 1180 FOR 1=1 TO 188 : NEXT I:GOSUB 11.8:
KE 752,1: PRINT : PRIN T "nOOKING "; AS , " SETCOLOR 1,. ~,. U:PRIHT "iii'. *** YOU'RE
HOU ES ";MOUE:t10UE =IWUEtl FINAL HAP tttttt":COSUB 1120
668 fOR YC =8 TO 6:P2=NRel,YC) 1118 POKE 752,8:ENO
670 If P2 =2 THEN 'O SU8 8lB 1128 MAP =ADRCKAPS] :fOR Y=J TO LEN'TH -2
688 If NOT PZ THEN POP : GOTO 830 :FOR X=3 TO WIOTH - 2:COlOR PEEK(KAP+V*.
6'8 X1 =P1 : X2= PEEK(XPNltYC) : P1 =x2· OtX)
780 If fEET AND YC THEN If PZ =3 AID NR 11 38 SOUND 8 ~2'8 - Y*14 - H,10,6:PLOT X, V:
(I,YC - l) =3 THEN PLOT 7 ',PEEK(YPNT+Y C- l NE~T X: MEXT T:RETURN
J:ORAWTO 7' , PEEk(YPNT+YC) 1140 GRAPHICS 3:COLOR I : PlOT 1,I:DRAWT
718 FOR XC =O TO 2 STEP 2 o MIOTH.J : DRaWTO NIDTH,LENGTH : DRAWTO 1
728 If XC THEN Kl =158- Xl:X2=158- X2 ,LENGTH:DRAWTO 1,J :POkE 752,l : RETURN
738 X01 =XI /2: X02=X2/2 1150 GRAPHICS 2:SETCOLOR 1,8,14:PRINT
740 If IRCX C, YC) THEN 760 U6 ; " 1 MOlorcycle \ ":PRIMT U6;" 1
758 PLOT Xl,XD1 : 0RAWTO X2,XD2:PLOT Xl , ..~ze rider \ ":PRINT 1t6 : 0PEN "1 •• ,O .... k
7'-K01 : 0RAWTO Xl,7' - XD2 : GOTO 7' 8
768 PLOT Xl , XDl :D RAWTO Xl, 7' - XDl:PLOT
Xl , KD 2:DR AWTO X2,X02 : PLOT Xl, 1'- XD2:DR
AWTO K2,"-XD2
778 IF NR(l . YCtl) THEN ORAWTO XZ, XD 2
188 'OTO 800
7'0 P2= NR(1 .YC+l ) :If P2=8 OR P2=Z THEN DO YOU WON T TO LEAUE
ORAWTO X2,H02 Q TRAIL "; :'ET UJ ,A :IF CHRS(A)="Y" THEN
888 IF FEET THEN IF YC ANO NRCKC,yel =3 FEET=l
THEN PLOT 1, .PEEK(YPNTtVCJ : DRAWTO Xl , 1280 PRINT "." DO YOU MANT EXTRA PA S
PEEkCYPNT+YC) SAGES"; :C;ET "I,A :IF CHRSCA' ="Y " THEN E
818 NEKT XC : NEXT YC:I F NOT NRCl. 7 ) TH ~TRA =I:C OTO 1218
EN IF NRCO,6) OR "R( 2,6 ) THEN PLOT 7'. 1210 PRINT "iii' DO YOU MAin TO USE TH v
3':PL01 n •• o E "AP" ; : GET "I, A: If CHRS (Al =" Y" THEN"
8 29 RETURN AP SW=l : COTO 1228
838 PLOT X2, XD2:D RAWTO 15'- X2, XD 2: PlOT 1228 PRln "iii' DO YOU MAin MO TORCYCL
X2,7' - XD 2: 0RAW10 1 5'- K2,7' - XD2:REIURN E SO UND" ;: GET Ill, A: IF CHR$ (A) ="Y" THEN
848 SOUN~ 1 ,258,2 , S NO*4:COL OR l:MAP=AO SNO=1
RCMAP$] : IF 1()1 THEN 860 1239 RETURN
858 fOR XC =- l TO I:FOR YC =8 TO 7: NRCKC 1240 DATA 0.28, 46 ,60,68,7.,78
tl ,YC ) =PEEK( "A P+(KY+YCJ*40+~ - X C ) : NEXT
YC:NEK1 XC:A$="SOUT H" : GOTO '28
860 IF 1()-1 THEN 888
818 fOR XC =- 1 TO l: f OR YC =8 TO 7: NR(X C
•
+l,YC) = PEEK(KAP+(MY -YC )*48+~+XC):"EXT
YC:MEXT XC : A$ ="NORTH":G010 '28 C HECKSUM DATA
889 If S()-l THEN '08
8'8 FOR XC= - l TO l:fOR YC=8 TO 7: NR(XC (See pgs. 7-10)
+l,YC) =PEEKCMAP+CMY - XC'*.O+HX - VC) : NEXT
YC : NEXT XC : AS ="WEST":GOTO 'Z8 188 DATA '73,82',88,78',86,46',43',385
,eo IF S( >l THEM '20 , .04 ,6'3 ,788 ,ti'l,1 8 .368 .8 35,7653
'Ie fOR XC= - 1 TO l:fOR yc=o TO 7:NRexc 258 DATA 7.7 .. 161,56',J87,358 , .57 ,828,5
tl,YC)=PEEKCMAP+ (MY tXC)*40+MKtYC ) : NEXT 48,163 .271,171.17'.514,336.458,673'
YC:NEXT XC:A S="EAST" 488 DATA 438,71 2,267,423 .. 6'4,.56 .. 180,'
'28 POK E 54286,I:SWITCH=16 - SWITCH:POKE 63,158,'81,122,71',82.438,631,79'6
186,TOP-SNITCH:GOSU8 658:POXE 54286.6 sse DATA 867,37' , '3 , 341 , 481 , 828,838 .. 76
4:POKE 77,8 ',77'.'58,3'4 , 698 .. 285,382, 423,8425
'38 If STICK(0)(13 THEN '39 788 DATA 88 , 115 , 688 , 785,4 15 , 343 , '48 .7 6
'40 IF STRIG(8) OR MAP sw=e THEN '88 8,733,'83,766,874,601,288,896,8'53
'58 IF P3 )2 THEN SOUMO 8,50 , 12,6:PRINT 850 DATA 25 •• 78',2 •• ,170, 417 , .'6 ,2.4 ,3
"IIiUTHREE LOOkS IS YOUR LIMIT":FOR 1= 17 , 487,4'7 ,5 0',527,451,885,4'4,7 381
1 TO 188:NEXT I:GOTO '88 1810 OATA 548,4',452,784,117,42',8'6,3
'68 GOsua 1148:P3=P3+1:SETCOLDR 1,8,1. 22,878,15',677,368,241,58 8,7' . 66 3'
: PRINT .. , .CHECI( IWTOACYCLE KAZE MQP It" 1158 DATA 2'8,82,185,1 47 ,"5,426.J16,4
; P3:'OSUB 1128 '5.788,248,3'7 2
'78 FOR X=l TO 18:FOR P=l TO .:fOR 1=1
TO 18:NEXT I:COLOR P : PLOT MK , MY:NEXT
P:NEXT X:SOUND O,8 , O,8:GOTO 848
'JS8 SOUND 8 ,O, 8.8:P=STICk(8) :If P=15 0
•
R P:S OR P=6 OR P='J OR P=18 THEN 'J40
v
~ VO L. 1 THE A.N. A.l.O.G . COMP ENDIUM PAGE 119
~
DINO BATTLE
~
Dino Batt le is a ga me of pri mordial co nfr o n{a ~ 7000·7110 Ope ning d is pla y
tion, a fi erce battle betwee n two players. See if you 8000·8220 End of game
ca n defeat a dinosaur! 10000·10035 Sets up player/ missile graphics
Your goal is to bite yO Uf opponent's dinosaur on 10040# 11000Reads sh ape data and stores it in the
{he back of the neck. By moving your joystick and p roper arrays
pressing the firing bun o n , you can move your dino~ 12000#12900 Data fo r s hapes
sa ur and open and cl ose his mouth. You may make a Name Variable
number of attempts before you s ucceed. Try to bite Time Time in seconds of the game
your opponent as many times as you ca n before the Score I Playe rs' scores
time is up. Score 2
Your score is displayed on the side of each dino~ TT Ti ming va riable
sau r at the start of the game. You receive one point X Horizontal posit ion of dinosaur
each ti me you bite the other dinosa ur. 0 X2 Horizontal position of dinosaur 2
DRI Direction dinosaur I is faci ng
DR2 Direction dinosau r 2 is facing
DFI Area in memory where player data
Une Explanation is poked
Y. Y I Vertical position of dinosaur DBI
3 Sets G RAPHIC mode and colors DF2
12 Sets time and score DB2
(J·16 Draws landscape Y, Yl Ve rtica l posi tio n of dinosaur I
80·81 Prints tex t Y2, Y3 Vertical position of din osa ur Z
100·200 Main loop: checks joystick and RT, RET, RTl Retu rn Flags
trigge rs and increments time G, H,DD Dummy va riables
300·315 Moves din osa ur figu res on screen C, Z,
1000#1015 Turns d inosaur number I around I Top of RAM: used fo r setting up
1100#1115 Turns dinosaur number 2 around p layer/ missile area
3500·3595 Makes dinosaur I ope n his mouth
and tr y to bite the other one Arrays
3600·3710 Makes dinosaur 2 do the same thing TFI , TF2 Flyi ng d inosaur's fro nt
3800 Prints both players' scores TBI, TB2 Flying dinosaur's back
3 900·3905 Plots cacti DINF I
39 10·3930 Plots rocks D I NFZ Dinosaur front and back views
4000·4021 Plots dinosaur 1, fall routine DINBI
4500·453 1 Plots dinosaur 2. fall rou tine DINB2
4600 Erases the dinosaur DHR Dinosaur 's head and mouth open
4800· 4810 Moves dinosaur away fro m defeated Each dinosaur is made up of twO players, posi tioned
opponent next to eac h other so they make up one dinosaur
5000·5990 Plots title shape . 0
PAGE 120 THE A.N.A.L.O .G . CO MPENDIUM VOL . 1 v
!~i·~;;i~!:~ii!=8
OINfl(C) :NEKT C:COTO 371.
3665 POKE 88,.:fOR C=l TO 6:POKE 88+C,
THEN RT=I:'OSU8 3588 DINf2 (G) : NEXT G
118 If STICk(1)=7 THEN X2 =k2+2:lf DR2= 3788 If RTl =l THEN RETURM
2 THEI GO~UB 1118 3711 If OR2=2 ~NO DRl=l ~MD PEEK(53262
111 If X<55 THE" X=5S )=3 THEN &OSU8 4818
112 If H)I'5 THEI H=I'5 3715 If DR2=1 ~MD DR1=2 ~MD PEEkC53263
115 01 DRI 'OSUB 318,385 )=3 THEN GOSU8 4818
128 If STICK(1) =11 THEI H2=H2 - 2:If OR2 3711 POKE 53278,8:RETURI
=1 THEN GOSU8 1188 3818 POkE 656,2: POkE 657,6: 1" SCORU; II
138 If 5TICK(8) =11 THEI X=K - 2:lf DRl=2 ":POI([ 656,2:POI(E 657,31 : ? SCORE2;"
THEM COSU8 1818 ":RETURI
132 If STRIG(1) =8 THEI RTl=8:GOSUI 361 3'11 COLOR 2:fOR J=l TO 4:H=II'CC5+RIO
•133 If
13C If
K2 <SS THEN K2 =55
X2)I'S THEM X2 =1,S
CIJ*IIJ:C=RMO(81*IC5+18:COSU83'83:MEX
T J:RETURM
3'11 ORANTO C+2,H+5:DRANTO G+2,H+3:RET
135 ON DA2 GOSU8 310.315 UA.
16' If T1"<1 AND TlHE<2 THEN POkE 656, J'13 PLOT G,H:ORANTO G,H+':PLOT G,H+4 :
2:POKE 651,18:? "8:88":GOTO a888 ORANTO C- 2,H+4:0AAWTO C- 2,H+l'PLOT Ii,H
'5 .
172 If TI~<18 THE" POkE 656.2:POkE 65 3'15 ORANTO C+2,H+5:DRAWTO C+2 H+3'RET
, L18: ? TI";" : O" ; TIHE:GOTO 188 URN ' '
115 POKE 6S6.2:POKE 651,18:? TI";":";T 3'10 COLOR l:fOA J=1 TO 3:H=48+R"0(1).
lItE; 11 "
188 POKE 77,8 II:G=R"0(1)*14S+11:&OSU8 3'13:IEHT J:R
288 COTO 188 ETUAM
388 POKE 532C8,X:POKE 532(' , X-8:AETURN 3'11 OAANTO G+5,H+S:DRANTO G+3 H+"RET
385 POKE S324',H - 8:POKE 512(B,X:RETURI URM ' '
318 POKE 532S0,X2-8:POK[ 53251 . X2:RETU 3'13 PLOT C,H : DRANTO C- 5,H+5:0RANTO G+
A. 3,H+':ORANTO G,H:DRAWTO C+( , H+l
~~S POK[ S3251,X2:POKE 5325I,H2-8:RETU 3'15 OAAMTO G+S,H+S : DRANTO C+3 H+"AET
URI ' '
1800 OR1=2:fOR G=l TO 4:POKE 011+,.8:_ 3'30 COLOR 3:fOR G=7' TO (7 STEP - 1:PL
EHT G:V =6S:Vl=6':Ofl=V+J:D81=Yl+Jl'fOR OT 8,C:ORANTO 15'6C:MEHT G:RETURI
&=1 10 18:POKE 081+G,OI_81CG) , CliO BB1=Df1:BB2= B1 : GOSUB (688
1815 POkE Ofl+&,DINflCG):IEXT C:fOR G= 4113 V=75:V1 =74:Dfl =V+J : OBl=Vl+Jl
l ' TO 22 : POKE Dfl+G , Ollfl(G):NEHT C'RE CI8S OM ORI GOSUe 4018,C028
TURI ' CI86 ATl =I:&OSU8 3608:'OTO 4818
1810 DRl =l:fOR G=l TO 4:PDKE Dfl+G.B:M C818 fOR G=1 TO ': POKE 081+e OLfCC):PO
EH l G:V=6':Yl =65:0fl =Y+J:D81=Y1+Jl:fOR KE Ofl+C,DL8CG):SOU"D O,120,8,15-G : IEH
G=l TO IB:POKE Dfl+C,DIIB2(C) T,
1815 POKE DB1+G , OIlf2(C):IEXT G: fOR C= 4811 POKE Dfl+10,OLB(18):POkE Ofl+11,D
l ' TO 22 : POK[ DB1+' , DI_f2(G):IEHT G'RE LI(11):fOA G=l TO 6:S0UI~ 8,121,8,lS-G
TURM ' :fOA HH=1 TO 18:"EHT HH:MEHT G: RETURI
1100 DR2 =2:fOR G=l TO 4:POKE D82+G.8:. CI28 fOR C=1 TO ' : POKE 081+&,OR8(G) : PO
EXl G:V2 =6S : Y3 =6':Df2=V2+J2:082=V3+J3: ~EGDfl+G , ORf(G):SOUIO 8 , 128,B.15 - C:IEH
fOR C=l TO 18:POKE Df2+'~DIlf2(G) CI21 POKE 011+10,OA8(10):POKE 081+11,0
1185 POkE D82+G,DIIB2'G) : IEXT G:fOR ,=
l'
TURN
TO 22:POKE Df2+C , OIlf2(C):MEHT G'RE
'
A8(11):fOA G=l TO 6:S0UID 8.128,8,15 - C
:fOR H"=l TO 18:N[HT HH:IEKT G:RETURN
1110 DR2 =1:fOR &=1 TO C: PDKE Of2+G.8:. C518 881=Of2:882=D82:&OSUB 4688
EXT G:V2 =6' : Y3 =65 : DF2=V2+J2:082=V3+J3 : C583 Y2=7C : V3 =75 : Df2=V2+J2:D82=V3+J3
fOR &=1 TO 18 : POKE Df2+C,OII81(C) C58S 01 OR2 G05U8 C528,CS38
CS18 RT=1:GOSU8 3580:GOTO .888
l'
1115 POKE D82+G,DINfl(G):IEHT G:FOR G=
TURN
TO 22:POKE OB2+G.Dllf1(G):.EXT G:RE C528 fOR G=l TO ':PDKE Of2+G,DRBC&):PO
KE D82+&.DRfC~):SOUND 8,118,8,15-G:NEX
3588 01 DRI GOTO ~518,3520 T •
3518 B8=D81:C& =35'0:GOTO 3558 C521 POKE Df2+18,DA8CI0):POKE Of2+11.D
3520 88=Dfl:C'=3SBO RB(11):fOA C=1 TO 6:50UID 8,118 8 15- &
3550 GOSUB 'C :fOR HH =l TO 18:IEHT HH:NEXT C:RETURN v
VOL. 1 TH E A.N .A.L. O.G. COMPE NDIUM PAGE 121
•
C HEC KSUM DATA
( See pgs. 7-10)
8 DATA '8',124,484,671,656,286,62',38'
,485,28',3,3'2,475,873,35,62'1
188 OATA 258,4",888,'2,76','88,'56,83
5,868,'56 , '64,352,'6',677,4'3,18468
175 DATA 4'3,'66,685,148.162,188,78,38
3 4'5 488,4'. 657 488 658 4'5,6778
3~88 6ATA 5,527,5;1,'15,715,52,885,887
,885,'5,78,573,384,318,415,7277
3688 DATA 14,533,5'8,'78,772,61,862,58
5,272,'15,'27,483,388,88',686,8635
1'83 DATA 68,614,285,623,'45,631,374,' Moire Demo
4,388,283," , '15,6,'48,',6186
45.8 DATA 113,562,338,832,'5',48,'36,7
,448,68','42,627,'24,621 , 2'8,8141
54.8 DATA 86,6',28',636,448,811,823,78 18 DE'
4 757 768,778,"8,18'.221,432,8881 28 A=I_T(I.,*168,
7651 6ATA 557,61',754,762,766,447,461, 38 CIAPHICS 8+16
458,46',465,452,456,373,32',212,7574 4. SETCOlOI 2,8,8
7886 DATA 417,63',658,883,61,"',818,5 58 FOR 1=8 TO 16. STEP 5
31,'23,437,21',3'1,5'1,685,357.8441 6' 8=I_T (l/2)
8818 DATA 215,224,226,614,322,'38,1'4, 7, COLOR 1
757L5.1t37517'7L'83L7'8L77'L58518388 88 PLOT 8,8
821:, OA A 1 ,11."I",17b,27.,8' ,711,' , . DRANTO 1,168
73,382,726,484,643,831,61',628,7487 188 PLOT A.B
18865 DATA 811,777,768,76',688,43,27' , 118 OIANTO A-I,168
8'6,564,311,872,333,488,781,373,8654 128 PLOT 8,168-8
12808 DATA 251,148,3'1 138 OIANTO 1,8
148 PLOT A,168-8
15. DRANTO A-I,8
• 161 nHT I
17. IF PEEK(764) (}Z55 THEM EMO
18. 'OTO 178
CHECKSUM DATA
(See pgs. 7~ 10)
Do you like to gamble but can't afford tr ips to las 35 '! "THEN ENTER YOUR BET OY PRESSINC
THE":? "TRIGGER, YOU MAY BET UP TO fI
Vegas or Atlantic City! If so, then this program is fo r UE"
you. By placing your bets carefully , you can befairly ... 1 "DOLLARS ON EACIt OPTION,"
sure of a high retu rn , while impulse betting on the 45 ? : 1 "WHEN YOU ItAVE fINISHED BElTIN
C, HOLD": '! "THE JOYSTICK TO THE RICHT
high odds might make you a big winner - o r it might UIITILL A"
make you go broke. 5B ? "POINTER APPEARS II THE BOH MARICE
D":? "'ROLL I>IC~A D PRESS TRICGER,"
Th is game is modeled after a type of gambling 68 ? :? "PRESS .' TO BECl]'"
machine fou nd in Las Vegas casinos. These machines 78 ? "COOD LUCK!! . "
75 If PEEK(5127"()6 THEN 75
use three dice to play and give you several options to ,e COTO 1888:REM DRAW BETTING LAYOUT
bet on. U nlike craps, you are betting solely on the 188 H=188:POSITIOII 7,28:? Mi
118 'OSUB 1788:REM CLEAR OETS RESET MI
outcome of a single ro ll of the dice. You may bet up
to five coins (nor mall y quarters) on each of the bet-
•
128 If COUNT:8 THEN Melee
138 If STICI«8' = ' OR STICI«I)=18 OR ST
ting options, with no lim it (other than your total ICI«8)=11 THEN O=B- l:COSUB 1588
137 If STICI«8)=6 OR STICI(CI)=7 OR STI
cash) to how ma n y of the options you choose to bet CI«8)=5 THEil B=B+l:COSUB 1588
on. 135 If B(12 THEil If BETCB)=S OR M=8 TH
EN 168
You use your joystick to position the bet cursor 148 If B(32 AND STRIC(8) =8 TItEN BET (B)
next to the option you wish to bet. Pressing the =BETCO)+l:POSITION K,Y:? BET(B)i:SOUND
trigger button will enter your bet one coin at a time 8,158,18,IS:M="- 1
141 If B(32 THEN IF BET(8)=8 THEN POSI
until you reach five coins, after which it will not TION K, Y: ? " .. ,
accept any more bets on that option. Moving the joy- 142 If B(32 THEN IF BET(B)8 THEil POSI
TION H, Y:? BETCB)
stick to the left or right will move the cursor. After 145 POSITION 7,28: ? M;" " i
you have bet as many options as you wish, hold the 148 fOR DELAY=1 TO 28:NEHT DELAY
14' If B)32 THEN B=12
joystick to the right unti l the pointer appears in the 158 If B=32 AND STRIG[O)=O THEN 288
box marked "ROLL DI.CE." Press the trigger again, 155 fOR DELAY=l TO 28:NEKT DELAY
168 SOUND 8,.,8 , 8:GOTO 118
and the computer will roll the dice. 288 COUIIT =COUNT+I:RE" ROLL AND ORAN DI
After each roll of the dice the computer will dis- eE
285 'OSUB 2780
play your win or say "SORRY" if you did not win. 218 Y=O:A=INTCRNDCO'*6+1):H=18:0N A GO
SUB 18888,18818,18828,18818,18'4e,1885
At this time you have an additional option. If you
should wish to take your winnings and quit, all you •
228 K=14:B=IIITCRNO(8)*6+1) : QN B GOSUB
18088,18810,18828, 1 8830,18849,18859
need do is pull the joysrick toward you. A push on 238 K=18 : C=INTCRND ( O'*6+1):ON C GOSUB
the trigger will return you to the betting routine. 0 18088,18818,18828, 1 8818 18840 , 18858
248 D=A+B+C:lf COUNT)t t HEN COUNT =1
258 RE" PAY WINNING OETS
268 If BET(8) =8 DR D( 12 THEN 275
265 MlN=NYN+BET(O) : POSITIOIl 6 , 21 :1 WIN
1 REM TRIPLE THREAT DICE
2 REM BY MICHAEL A, IUINS
·
278 POSITION 1,14 :? "." :
275 If BET(I'=8 OR D) ' THEN 2'8
3 REM JULY, J'81 288 WIN=MIN+BET(I) : PO SITION 6, 2 1 : ? WIN
1801" BET(11) : COUNT =8
15 GRAPHIC S 8 : ? " THIS IS A GAME PATTER
NED AFTER A":? " GANBL I NG KACHINE IN LA
·
285 POSITION 3,15 :? "+";
2" IF A(> B OR B( )C OR BET( 2 ) : 8 THEN 3
S VEGAS . "
28 ? "YOU OET ON THE OUTCOME Of THE RO
LL Of" : 1 "THREE DICE . YOU HAUE "ANY OP
••
2' 5 NIN =WIN+(B ET( 2 )*36 ,: POS I TION 6 , 21 :
? WIN ;
TION S YOU" 388 POSI TI ON 3, ~ 6:? "+";
25 ? "CAli BET ON . TO SELECT THE OPTIO 1 85 If (A <>B AND A() C AND B<>C) OR BET
II ON":? "WHICH YOU WI S H TO BET, USE TH (3) =8 THEN 128
E" 318 If A=B OR B=C OR A=C THEN MIN=WI"+
38 '! "JOYSTICK TO NOUE THE .), UNTILL (BET(I'*6':POS I TION ~i ~l : '! WI .. ;
n" : 1 "PO I NT S TO TH E PROPER OPTlOI. Y 31 5 PO ~ ITION 1 , 17 : 1 ' ...... ' ;
OU " 328 I F A=B AND B=C THEN 'O SUS 7888
PAGE 124 THE A.N .A.L.O.G. COMPENDIUM VOL . 1
vo
, v+" ..,- ·
18848 ? '~ ,
lieu •K,Y: ..,
18842 X,Y"2 :? ' ';
lieu:
1885. H,Y:? ..~.
18851 K,Y"I:?' ';
18957 X,Y"2 :? ' ';
18853 AETUAM •
•
- C H EC KSU M DATA
(See pgs. 7-10)
v
BICYCLE u
~
•
16K Cassette 24K Disk
by Dan Devos
Bicycle is a one player ga me. You are a messenger 5 CHPO S= CHSETt(~5C(CHAR$ C I') - C12)*C8
working fo r the largest shi pping company in l'he 6 FOR J =CO TO C7
world. As part o f your daily ro utine, you must run 7 READ A:POKE CHPOS+J,A
8 NEXT J : NEXT I
memos and invoices from the main shi pping o ffices ~ fOR I=C1 2 TO 1,:POKE CH SET+I , C256 - Cl
o ut to the loading and receiving docks. Leaping on - PEEK(CHORG+I) : NEXT I
10 POKE 756, CHSET /C 256
your trusty bicycle, you proceed across the vast 15 DATA 9,0,223,1",213,85,221,0
parking lot, past rows o f id ling tractor trailer rigs, 16 DATA 0,16,120,254 , 127,10,4,8
17 DATA 8 , 8,28, 2 0,54,0,0,0
dodging the many potholes that im pede yo ur 18 DATA 8 , 8,26,28,'3,42,28,8
progress. However, the potho les are not the o nly l ' DATA 112,112,248 , 248,252, 252,226 , 22
6
things you have to look out fo r. The d ri vers of the 20 DATA 226 , 226,254 , 254,255,127 , 181,24
trucks are in a hurry to leave, and often they can 't 5
21 DATA 223,'5,27 , 0,0,0,0 , 0
bother to watch out fo r one poor little messenger on 31 BB=CO:Y=C8:SETCOlOR C2 ~ C1 , C4:SETCOl
a bicycle! Needless to say, you have to be carefu l OR C3,CO,12 :S ETCOlOR Cl,C8,C8:SETCOlOR
cO,Ca , C(
where you 're going! 12 8B =CO:H=C1:POSITION C5,l': ? UC6;"HE
Playing the game. N:vvv":PO'HTION C' , C20:? UC6; " UUU"
:SETCOlOR C2, C3,C4:SETCOlO
The cyclist is continuall y proceeding at a fi xed
rate, and he can also move up and down. Every time
yo u are hit by a truck or fall into a potho le, you lose a
cyclist. There is a total of three cycl ists in a ga me.
Scoring.
For ever y space you move, you get one point. For
every sectio n of the parking lot, there are two truck
drivers walking to their trucks. If you hit a walking
truck driver you get 500 points. Watch out! The
truck dri vers can stand o ver the pot holes and when
the cycl ist hits them he fall s into the ho le. ' ~~;~~i:~::~ ( C3*RND(
The program. 65 POSITION H ,O+Cl: ? nC6; :POSITION
This program uses a machine language subro utine .79
P , Q:? UC6;"v" : P05ITION P,otC1: ? UC6 ; "U
If AA THEN (000
to move player missile graphics. The program draws
100 AA=Cl:POKE 752 , Cl : POKE 51257,CO:PO
twO rows o f trucks in G raphics Mode 1. Then three KE 5125a,CO:POKE 5125',CO
players, exactl y the same as the edited characters, are 110 PCOlA=26:PCOll=52:PCOl2=52:PCOll =5
2
put on top o f three of the trucks. These trucks are 1800 FOR 1=1516 TO 1796:READ A:POKE I,
erased and the pla yer trucks can then move A : MEXT I
1010 FOR 1=1774 TO 1787:POKE I,CO : NEXT
smoothly. The fest o f the program just moves the I
players. Type in the program and wait until the 1820 PH=PEEK(106) - C16:PHBASE=C256*PH
1810 FOR I=PH8ASEtl021 TO PMBASEt2046:
screen display says " Press Start ." 0 POKE I,CO : NEXT I
1040 FOR I=PHBASE+I025 TO PH8~SE+1014 :
READ A: POKE I A:NEHI I
o GOTO 10069 1050 FOR I=PH6ASE+1281 TO PHDASEtI2":
1 88=CO:T=C9:U=C9 : U= CO:DIM CH~R$(C8),W READ A:POKE I A: HEXT 1
HICHCCl,C2):CHAR$ ="fQUUNHZ" 1860 FOR I=P"~ASEt1517 TO PHDASEtI555:
2 GR~PHICS C17:CHSET= ( PEEKe196)-CI2'*C READ A:POKE I,A:HE~T I
256:CHOAG=571((:POKE 6 ? I,Cl 1861 fOR I =PHBASEt17,1 TO PH8~5E.1611:
3 FOR I =CO TO 511:POKE CH SETtl,PEEKCCH READ A:POKE I,A:NEMT 1
OR(;-+n : NEIH I 1879 POKE 79 4 ,PCOlO : POKE 795,PCOl1:POK
4 FOR I=Cl TO C7 E 706,PCOl 2 :POKE 707,P COL 3
VOL. 1 THE A.N.A.L. O.G. COMPENDIUM PAGE 127
COLOR •
SLOT MACHINE
The re~defined character set is a powerful tool This effect is due to a curious property of the
which can be used in many different ways. The graphics screen whose technical name is "artifact-
cha racters can be used fo r special animatio n effects, ing." Simply stated, the principle is thata single pixel
and are especially usefu l when combined with o f GR.S (the smallest the ATARI will generate) will
certain types of modified display lists. Finally, they be o ne color while another pixel one space o r any
can be used to create colorful graphic displays in the odd number of spaces away will have a different
text mode, GR.O. This last application is the subject color. By now you are probably asking, "If this guy
of this article. wants to talk about re-deAned character sets, why all
If you have ever done much playing around with this stuff about colors in GR.ar" Eve ry character has
GR.S you know that getting (our colors in this mode eight bytes associated with it, and the panern made
is not as difficult as you might expect. For the new· up by those bits which are o nes determines the shape
comers I include example P r ogr a m I to show what I of the characrer. Two examples of this are shown in
mean. Figure 1 with I A showing the bit pattern of the
lette r "A" and IB showing a percent sign . Each
pixel has a GR.O character, whether it be text or
18 GRAPHICS 8 : 5ETCOLOR 2~8 . J5
28 SfTCOLOR i •••• :COLOR 1 control graphic, is identical to a single pixel ofGR.a.
JI fOR H=8 TO 2'. STEP 2 : PlOT X, , By apply ing the same techniques which gave us
4' DR.NYU K,18 : IEXT X
5. fOR X=l TO 211 STEP 2 : PLOT X, 21 colors in GR.S to re-defining characters, we can get
61 DRQNTO K 18 : .EXT K many kinds of colored graphic characters.
78 f~R X=8 to 28' : PLOT X,48
88 DRQNTO X,51 : MEXT X
A B
• 00000000 OOOOOOOO
000 11000 0 11 00110
Pr ogram 1. 001 11100 0 1101100
0 11 001 10 00011000
This may seem to have little to do with re~defined 001100110 00110000
character sets, but bear with me, I'm coming to it. 01111110 01100110
The example should show what appear to be three 01100110 01000110
bars on a white background with blue at the top, red OOOOOOOO OOOOOOOO
next and black at the bottom. The program was
supposed to draw two sets of evenly spaced vertical Figure 1.
lines and one solid bar, so what happened~ You
would expect the bottom bar to be black. The on ly There is one im portant facto r which should be
differences between the top two bars is in the posi~ mentioned at this point. The colors you can get (rom
tioning of the vertica llines, yet we get the two colors. your special characters (or a GR.S display) will
VO L. 1 THE A.N .A.L.O .G . CO MPENDIUM PAGE 129
depend on the chosen backgrou nd color and chosen there is a comment I wou ld like to make. Ca l cu l a~
lu minosity of the foregr ound. Fo r your own app li ~ ting OUt aU the numbers for specia l characters you
catio ns you should experiment with the combina ~ have d rawn on graph paper is very slow work and it
d ons of foregr ound and background color whi ch tends to be boring. Fortuna tely th is is the sort of task
gives the effect you wa nt most. Fo r the purpose of which lends itself to being "computerized." There
this articl e and the game program which accompan· are, in fa ct, many character editor programs on the
ies it I use a white background (SETCOLOR 2,0, IS) market as well as some which have been published in
- and a black foreground (SETCOLO R 1,0,0).
I give two exa m ples in Figures 2 and 3. Fo r
magazines. These all allow you to make changes in an
en larged matrix and see the effects of these changes
on the normal sized character. They let you save the
greater ease of use I have enlarged the pattern of bits
so you can see them better than in the previous special character set or "font" for use with your own
example. I have also labeled the values of the bits and programs. I used such a program which went as fa r as
given the decimal values that you would poke into writing the actual subroutine that does th e work in
the character table to make the changes. With the the Slot Machine game.
specified colo rs, the character defined in Figure 2 The game.
will give you a solid blue block while the one in After the title display, the program will draw a
Figure 3 will make a solid red block. colorful slot machine on the screen making use o f
several kinds of colo red graphics characters. There
Decimal are two ways to play, which you choose by pressing
128 64 32 16 8 4 2 1 value the OPTION button any time there is no bet placed.
1 0 1 0 1 o 1 o 170 Fo r those who might be unfamilia r with slot
machines I will describe the opti ons. Single li ne play
I 0 1 0 I o I o 170
uses only those sy mbols which line up in the cente r
1 0 I 0 I o I o 170
of the pay windows. In this version additional
I 0 I 0 I o 1 o 170
"coi ns" bet give bigger payou ts when a winning
I 0 I 0 I o I o 170
combination comes up. The five lin e version gives
1 0 I 0 I o I o 170
more ways to win by add ing top, bottom and dia~
I 0 I 0 I o I o 170
gonal pay lines for the num ber of coins played. Si ngle
I 0 I 0 I o 1 o 170
line play can pay more when it pays, bu t the five line
I 0 I 0 I o 1 o 170
version ca n give more ways to win so you win more
often.
Figure 2 (Blue Block). Playing the game itself is simple. To enter a single
coin bet, press the trigger button of the joystick and
release. If you wish to bet the maximum bet of five.
Decimal
128 64 32 16 8 simply hold the trigger button down until the beeps
4 2 1 value
o o stop. In the si ngle lin e version the pay chart changes
I 0 1 J o I 85
to reflect payout fo r the size o f the bet, while the five
o 1 0 J o 1 o 1 85
lin e version employs line pointers to indicate how
o J 0 J o J o I 85
many lines are in play. When you have made your
o 1 0 I o 1 o 1 85
o J 0 J o I o 1 85 desired bet, move the joystic k in any direction to
o J 0 1 o J o 1 85 spin the reels. More details are given in the program
documentation. Happy gambli ng! 0
o J 0 J o I o J 85
o I 0 J o I o J 85
PROGRAM DOCUMENTATION
Figure 3 (Red Block). The first thing the program does is to jump to the
routi ne which alters the character set and since that is
the main thing I wish to illustrate, I will cover this
Simple red and blue blocks alo ne make for rather fi rst.
dull graphics, but I'm sure you can see that by cleve r Line 32000 The fi rst step resets RAMTOP.
arrangi ng of the dots you can create many interesting Next a graphics command to set the new top of
shapes. If the shape you wa nt is too large to fit infO a memory. Now we poke the location of the new
single 8x8 grid then use two , th ree or even more character set .
characters. To give one example of the kinds of Line 32005 This defi nes a machine language
th ings that can be done with color graphics routine which wi ll copy the o ld c haracter set out
cha racters and hopefully have a little fun at the same of ROM into the protected area o f RAM.
time, I include my program fo r Co lor Slot Lines 320 1 0~320 1 5 These lines are here to
Machine. give you something to look at wh ile the c h ar~
Before getting into a description of the game itself acter set in itializes. You won't see anything at
PAGE 130 TH E A.N.A. L. O.G. COMPENDIU M VOL. 1
th is point si nce the area pointed to by C HBAS redraws the machine and paychart and resets all
(location 764) is blank. valul!s to beginning leve ls. Qu itting naturally
Line 32020 This executes the machine ends the game.
language routine so that the material printed in Lines SOO~590 Th e functions here are
the previous lines can now be seen on the screen. similar to the betting loop of the singl e line
Unes 32030~32040 Now we mak e the vers ion. The main difference is in setting line
actual changes. We first read the number that poin ters instead of changing the paychart.
tells where to start and then p ut in the new Lines 600~610 This reads all payable
numbers. Some of the characters look a bit locations. Caution shou ld be noted here. Be
funny (like a duster of cherri es with a blue leaf sure when you type these lines in that you use
or a purple bell) but this is the best I could do the abbreviation LOC, (or LOCATE and POS,
with these colors. for POSITION, or you won't get everything in
Now we return to the mai n program and from this on those lines.
point I will take things in the sequence they arc Lin es 620~676 This section checks tor
shown in the program. wi nning combinations and jumps to the payout
Lines 1O~ 1 J These set up the reels of 30 routine if one is present. I originally tried to
"symbols" on each. If you wished to change the make th is section more brief, but kept getting
odds of rhe game, th is is the place to do it. You errors.
could make it harder to win by changing the Lines 680~698 C hecks for win and goes to
symbols or by adding no pay sy mbols or blanks. sound routine if appropri ate.
If you wanted to, you could set up the reels so Lines 700~720 Resets bet, erases line
that you would win on eve ry play, which I pointers and jumps back to betting routine if
would consider to be boring not bank rupt.
Line 30 Jumps to the rou tine which draws Lines IOOO~I055 This creates the siren for
the machine. winning and is a simple tone with rising and
Lines 40~IOO Here we set the initial values falling pitch.
for game counters and display them. This also Lines 1300~ 1360 This is the routine which
lets you know you are playing the one li ne resets the paychart according to the size of the
version. bet in the one line play version.
Line 120 This displays the betting prompt. Lines 2000· 2090 This is the routine
Line 125 If the bet is the maximum or the which actually draws the machine. Notation
bankroll is zero then the betting routine is should be made here that the paychart is not
skipped. truly complete. Most combinatio ns will pay
Line 130 Wait for trigger press, increment with a bar (single or double) on the last reel. I
bet, decrement bankroll and sta rt sound. Also d id not have room to fit this on the screen.
gosub to change the paychart. Lines 2300~2390 This animates the handle
Line 135 Jump to the five line version if by fitst erasing the knob and redrawing it lower
OPTION is pressed and bet is zero. and doing the reverse by drawing a section of
Line 145 Erase play p rompt if bet reaches the hand le and the knob one space higher. This
maximum. routine also clears any old wins.
Line 150 A delay is slow betting. Lines 2400~2495 This is the payou t
Lines 160~168 Display bet, shut off sound, routine for the single line version.
display bet. Lines 2600~2690 This is the super jackpot
Lin es 17 0~ 175 Return to betting loop it routine and is triggered if three of the "seven"
stick not moved or if stick moved but bet zero. symbols appear on the center line with maxi·
Line 180 Zero Out the attract mode. mum bet in the one line version and on the fifth
Lines 290~31O Jumps to the routine that line with maximum bet in the five line version.
animate the handle and spin the reels. This has first an explosion sou nd, a slower siren
Lines 3 11 ~3 1 5 Reads the symbols on the than the regular windsound followed by another
pay line and jumps to payroutine. explosion. Then the words "SU PER JACK·
Lines 320~327 Calculates the proper length POT!!!" are flashed. I suggest that you type in
of windsound and ju mps to that routine. "GOSUB 2600" from the direct mode as you
Lines 330~3 40 Resets bet to zero and i( any won't be seeing much of this routine unless you
money is left you are returned to the berring change the odds.
routine. Lines 2950·3180 This animates the spin of
Lines 350~ 42 0 This is the routine that is the reels. I had originally tried to make the reels
activated if you go broke. It resets the left turn two full spins plus a random bit extra, but
margin, erases the paychart and then gives you this slowed down the action of the game coo
your quit or start over options. Starting over much, doing it from BASIC. Therefore we just
VOL. 1 THE A.N.A .L.O .G. COMPEND IUM PAGE 131
.......
1
545 IF PE£K(5321'):3 AMD 8ET:I THEN 'I
551, IF 8fT=1 THEIII POSITIOIII 4,8:PRIIT "
1 REM COLOR SLOT MACHINE ,
2 REM 8'1' MICHAEL A, IUIMS 552 IF BET =2 THEM PO SITIO" 4,6:PRI"T "
3 REM 1II0UEHIER l,al
4 GOSUB 328"
1. DIM LS(61),M$(61) RS(68) PAY$('):OP
EI U2,IZ,8,"S:":NIMS6uMD=II'I:fPAV=41.
8:SPI"=2 '5'
.
" ",,
,
55. IF 8ET =3 THEIII POS1TIO" 4,18:PRIIIIT
556 If 8ET =4 THEIII POSITIO" 4,4:PAI.T "
-II ,
11 PIIIYS : " h~-e.zlD": CH ='1: D8=U6: S8 =16 5si If 8ET =S THEIII POSITION 4,12:PRllllr
•15 LS =" ikedUgh.~b9h.fCd=9hC~fi
d9hCdg~d.fCdCdabgh.fCdCd.f9h
je
" u,
5ia'POSITION Z',22:PAINT BAlkAOLL;" u;
:P05ITION 24,23:PAINT BET;
28 MS ="abR fgh. fabgh. fCd=. fcdabeo fghi
jeofabc dgh;l' f,lt. ~habcdeo fed"
25 RS =" ghcd~ f_gheo fgh. fCd=C dcdeo f . d i
" ..
562 IF DET : 5 THEIII P05ITIO" 28,21:PIINT
565 fDA DELAY: 1 TO 28:NEXT DELAY
jgh-=- d9fl::CdC d. fgh. f=. f. fed" 566 SOUID 8 , 8 , 8,8
38 HiMKAOLL =101:8ET=8:WIM =8:L =I:H=I:R: 57a IF STICK(O) =15 THEN 538
1 575 IF DET =I THEI 538
41 GOSUS Z•• 8:AEM DRAW MACHINE 5a8 'OSU8 2388
,. POSITION ZI,28:? "1 LINE PLAY" 5'8 GOSua SPIJI
18. POSITION 28,Z2:PRIMT "BlIIIIKROLL:";B 68. LOCATE 5,8 , L":POSITION 5,8:1 CHAS(
AIIIKAOLL:POSITION 28,23:PRINT "BET:";BE L",:LOCATE 8,8 , "" : POSITION a,8:1 CHRS(
. .,,
T;:POSITION 38 23:PAIIIIT "WIN:"'NI.'
128 IF BET(S THEIII POSITIO" 2.,il:P~IMT
125 If BAMKROLL =. OR 8ET=5 THE" 145
~:LOCATE 11,a,A":P05ITION 11,8:? CHR
S (RM)
685 LOCATE 5,6,LT:POSITIO. 5 , 6 :1 CHRS(
IT):LOCATE 8,6 , NT : POSITIOIII 8,6:1 CHAS(
118 IF STAIG(B)=. THEN BET=SETtl:GOSUB "T):LOCATE 11,6,AT :POSITIOIII 11 ,6 :? CHR
138.:50UIIID ' , S8.18 , 14:8A"KROLL=BAIIIKRO SUT)
LL-1 618 LOCATE 5,18,L8:POSITION 5 , 11:? CHR
115 If PEEK(5321'):3 AND BET =, THEN 58 SCL8):LOC4TE 8,18 , NB:POSITIOIII a , II :? C
•145 IF ...
BET =5 THEN P051TIOIII 28,21:1 "
HRS(MB) :L OCATE 11 , 18,R8:P05ITIOIII 11,18
:? CHAS(R8)
621 If (L"=CH AND MM(>CH) OR (LH=CH AI
lSI fDA DELlIY =1 to S:IEKT DELAY D HHi-LM) THEM F=LM:S =MM:T=RM:G05UI FPA
168 POSITIOIII 24,Z3:PRIIIIT 8ET; y
16S SOUIIID 1,8 , ',8 621 IF LM=DB .IIID ~SB 4111D (AH=OB OR A
168 PO 51 nOM 21,22! PAIIT 8AIKROLl;" "; " =5 8) THEN F=L":S ="":T =AM:GOSUB FPAY
178 IF STICK(8) =15 THEIII 128 622 IF LNl-MM AN. RM: "" THEN f=LM:S:MH:
175 IF IET =I THEM 121 T:RN :Ii OSUB FPAY
118 POKE 77 • 623 IF LM=tB Alt (NMl-OB OA MM=S8) AMt
2" 'OSU8 2i •• :REN PULL HANDLE AM=51 THEM F=l M:S=MM:T=RM:GOSUI fPAY
311 GOSua SPIJI 62. If LM()CH AND l"(>OB AMD LM(>SB A.
311 LOCATE 5,a,LM:POSITIOIII 5,8:? CHRS( D L"(>1'5 THEN IF lM=HM AND (RM=DI DR
l"'
...,
312 LOCATE 8,8."":P05ITIOIII 8,a :? CHAS(
R"=S B) THEM 62'
625 IF LM=S8 AIO ""=tB AMO CRM=DI OR A
M=S8) THEI f : LM:S=MM:T=RN:GOSUB fPAY
313 LOCATE 11,',RM:P05ITION II,B:? CH. 626 IF LM:SB 1"0 CMM=DB OR ""=S8) 1111.
S (AN) RNeDI THEIII F=LM:5=MM:T=RM:GOSUB fPIY
315 GOSUI 2 ••• 628 'OTO 638
328 IF NII>I AID wtlll(BET*I. THEM DUA=7 62' F=L N:S =MM:T =RN:GOSUB FPAY
: liOSU8 WIJI50UND 611 If IET =1 THEN 6',
325 IF NIN) =8ET*11 AMD NIIII(IET*2S THEIII 631 IF LT:DI ."0 ",=S8 A"O (AT=DI OR R
tUR=3:COSUB WIIIISOUIIID T=S 8) THEIII F=LT:5 =MT:T=RT:G05UI FPIIIY
326 IF wtlll> =IET*2S AMt wtM(=IET*SI THE 632 IF (LT :C H Alllt MT(>CH) OR (LT=CH A.
M DUR=5:'OSUI NIIIISOUID o MT =CH) THEN F=LT:S=NT:T=RT:GOSUI FPA
121 IF NII>8ET*51 AND NlN (211. THEN DU y
R:18:'OSUI WI.SOUID 633 IF LT:Da A"D ("T :S6 OR NT=DB) AIIID
~38 IET:8:POSITIO. U,23 : PRINT 8ET;" " RT =S 8 THEN f=LT:S=MT:T=RT:GOSUa fPAY
614 If LT ="T AMO AT =N1 THEN F=LT:5="T:
i48 IF BANKROLL>' THEN 121
- 351 POKE 82,2'
361 FOA 1 =1 TO
318
28 , 1:1 "
? "YOU
T=RT : GOSUB FPAY
635 If LT:SB AMD ",: 01 .ND (AT:OB OR A
T=S 8) THEM F=lT:S =HT:T =RT : 'OSUB FpAY
636 If LT ()C H AIIID LT( >185 AIIIO LT(>DB A
MD LT(>S8 THEI If IT=MT AMD (RT:DB OR
HA TO au RT =SB) THEM 648
Y MORE": 1 637 IF LT:S B AND ("T=58 OR ",=D8) 4ND
388 ? "PRE "WISH TO RT : DI THEIII F=LT:S=NT:T=AT:G05UI FPAY
QUIT" 638 'OTO 642
1'8 If PEEK(S127"(>6 ~.D PEEk(S127')( 648 F:L T:5:NT : T:AT:GOSUB FPAY
)5 THEM H8 6~2 IF 8ET:2 THEI 681
.aa IF PEEK(S321')=6 THEN POKE 82 , 7:'0 643 IF La=DB Alii. MB =S8 AIIID (AB=OB OR R
TO 11 8 =5 8) THEN F=LB:5=M8:T=R8:GOSUB FPAY
428 POSITION 21,18:? "THANK YOU":? "FO 644 IF (L8 =CH AN. M8(>CH) OR (L8 =C H AM
R PLAYIIG, BETTER":? "LUCI( NEXT TIItE": o M8:CH) THE" 652
E•• 645 If L8:D8 410 CM8=08 OR ~=58) AND
5aa POSITION 28,28:? "5 LIlliE PLlIY"; A8 =S B THEIII f=LB:S:H8:T=R8:GOSU8 FPAY
PAGE 132 THE A. N.A.L.O.G. COMPEN DIUM VOL . 1
v
646 IF L8 =MB AID A8=MB THEI 652 2115 POKE 7S6.PEEK(116)+1:5ETCOLOR 1.'
647 IF lB=S8 AID MB =DB AID (AB=D8 OR R .I:SETCOLOR 2 I 15
8=SB) THEI f =LB:S=MB : T=RB:IiOSU8 FPAY
648 IF LB()CH A"D LB()1.5 AIID LB()D8 A m~ m:~ ::nJhm.t.mH"
"0 LB()SB THE I IF LB =MB AND (AB=DB OR
AB =SB) THEI 652
64' IF lB=SB aID CMB =DB OR MB=SB) aID
PAYS 5"
ZIU PAUT . . .. t-'
2816 PAla, H"
~
"
~
" ~n " Cd cd cd
RB =DB THEil F = LB:S = MB:l=AB:~OSUB FPAY
658 'OTO 654
652 F=lB : S=MB : T=RB:'OSUB FPAY
PAYS II"
ZI28 PRIIT ••••
2125 PAIIT
t"'. •• ••
".1 ··n r
654 IF BfT=3 THEil 681 PAYS 14"
655 IF IT=DB AID MM=SB ARD (AB=DB OA R
8=SB) THEI F=LT:S=MM:T=A8 : ,OSUB FPAY
till PAUT :: U·'
2135 PRIIT H'"
•• •• a~1" gh gh gh
656 IF (LT=CH AIID MH:CHJ OR (LT=CH AID PAYS 18"
MM()CH) THEI 664
657 IF LT =DB aID (MM=DB OR MM=SBJ AID
AB=S8 THEN F = lT:S = HM : T = RB:~OSUB FPAY
~::; :
::~:~ ~r"H~"H""H"
PAYS ZI"
. nI" •••
658 IF IT =HM AID AB=MM 'HEI 66' 2146 PAIl' "111111111111111"
65' IF LT=S8 AID MM:D8 AID CAB=D8 OR A 2148 PRIIT .. hhf"f,-t"f,of ~ KlX BARS
S=SBJ THEN F=LT:S =MM:T =AB:IiOSUB FPay PAYS 21"
:: ~I~~mm~~ '" --- ---
661 IF IT()CH AID LT()115 AID IT()OB A 2158 PRlin
10 LT()SB THE I IF IT=MM AIID (AB=D8 OA 2155 PRINT
A8=SB) THEI 664 PAYS 51"
661 IF LT=S8 AID (""=DB OA MM=SB) AID
AB=DB THEil f = LT:S = "":T = AB:~OSUB FPAY
662 'OTO 665
~:~; ::~:~ :: ~I! ...FFti. ~~ r' ij ij i j
~nnn~! ~~~lYNliWl~~~
664 F=LT:S =MM:T=RB:IiOSUB FPAY
665 IF BET =4 THEN 688
666 IF LB=I.5 AID MM=LB AID AT=HM THEI
WIM=WlI+2118:'OSUB 2681
667 IF LB=DB AID MM:SB AID (AT=DB OA A
T=5B) THEN F = lB:S=NM:T=AT:~OSU8 FPAY 21'8
"Httttttttt~~~·;
2••• PAnT
RETUR.
668 IF ClB=CH A"D ""(}CH) OR ClB =CH AI
o NM=CHJ THEN 676
66' IF LB=D8 AID (""=DB OR MM=S8) AID
RT=SB THEI F = lB : S = "" : T = AT:~OSUB FPAY
2118
2118
2128
2138
POKE 752.1:FoA 1=1' TO 23
PoSITIo. 21.1
PAIIT ..
.EXT I •
... -
67. IF lB(}1.5 AID LB=HM AID AT="" THE 2U8 RETURK
• 676 2218 FOR 1 =1 TO 5
2218 POSITIo. 28.16:PRIIT Pl O'r' J T05
*UI:I.1"';
2Z21 FOR DELAY =l TO 11:IENT DELAY
2231 PoSITIOI 28.16: PAIIT "PLAY 1 TO 5
COI.S"·
2241 F06 DELAY=1 TO 11:.EKT DELAY
2258 IEXT I
2268 AETURK
FPAY 23e8 POKE 75 2 .1:P051TIo. 17.7
IOI.L"W1:.:POSITIOI 2'. 2310 FOR 1 =1 TO 5
2328 PAIIIT " , ..... " ,
THEI DUA=2: liDS 2325 FOR DELAY =I r6 28:IEXT DELAY
2338 IEXT I
2340 FDA 1=1 TO 5
2351 PAIIT '1 t ..... ";
2355 FOR DELAY=I TO 28:IIEKT DELAY
2368 IIENT I
Wl. ( 21Ie THEI DUR=I_ 2378 WIM=8: POSIT lOR 34.23:? WII;" ";
l~j~~;~i!i~;:~:i.~:.:;:?
23'8 AETURK
'''''';: POSITIOI 4.6:? 2488 IF LK=CH AID NM()CH THEil WIN=BET*
, ": 4,11: 1 "~";:POSITIOII 4. 2
12: ? 2418 IF lM=CH AID ""=CH THEI WII=8ET*5
7'5 2C.21:PAIIT BET; 2428 IF LK=" AID NM=L" AID AK=NM THEN
718 THEI 51. WIN =8ET*18
721 'OTO lSI 2425 IF LK=" AND ~" AID CAM=D8 DR
11.1 RE" WIlIER SOUND AM=S8) THEil Nl. =WII*11
1'18 FDA 1=1 TO OUR 2438 IF LK=111 AID MMeLM AID AM=HM THE
1.15 FDA 5=41 TO 'I STEP 5 • WI. =SET*14
1.28 SOUID 8.5 . 18.18 2435 IF lM=111 AID MMel11 aID (AMeDS 0
1125 IEXT S R AM=SB) THEil WII =BET*14
1138 FOR 5='1 TO 41 STEP - 5 2448 IF lK=113 AID ~l" aID AK=HM THE
1.35 SOUIO 1 . 5 , 18.18 II WII=8ET*18
1848 IEXT S 2445 IF lM=113 AID ~113 AID (AK=DB 0
1158 NEXT I R AK=SB) THEI WII=BET*18
1155 SOUID ••• • 8 •• : RETUA. 2458 IF lK=DB AID HM:lM AID RK=HM THEI
13 •• P5=2 WII =BET*51
1318 FOR 1=1 TO 8 2452 IF lM=S8 AID MM=lM AID AH:HM THE.
1328 POSI1IOI 14.PS :? A5CCPAY$(J,IJ)*B WIN=BET*21
ET;" "; 2453 IF LH:DB AID ""=SN aID CR~DB OR
tItS PS=PS+2 AMeS8) THE. MI. =BET*Z8
1338 IIEKT I 2454 IF lM=DB AID CMMeDB OR MM=S8) AID v
1148 IF BfT(5 THEI POSITIOI 34.J8:7 AS RM=SB THE. WI. =BET*28
C(PAYS". " )*BET ;" ";: AETUAI 2455 IF LK=SB AIID MM=DB AIID (RMeDB OR
1358 IF BET =5 THEM POSITIO. 34.18:? AS RMeSB) THEI WII=BET*28
CCPAY$('.')).I.: 2456 IF LMeSB AIID (MMeDB OR ~SB) AID
J368 AETUAI AM=D8 THE. WII=BET*28
2 ••• POKE 7S2.li1 CHA$ll2S':PO'ITIO. 2 2468 IF LH:115 ARO MM=lM AID AM:HM AID
!.Z:PAI.T ""HrforrHHH" ab P 8ET(5 THEI WII =BET*288
AYS 2" 2478 If LM:185 AID HM:LM AND RM=MM AID
BET =5 THEI NII =BET*ZI8. : IiOSUB 2610
VOL . 1 THE A.N .A .L.O. G . COMPENDIUM PAGE 133
2"1
...
2685 POSIlIOI 28,21: PRIMT ..
RETURN
281~' SOU .. D ••••• ,8
2'."5 STOP
32808 POKE 1'6.PEEK(186)-S:~AAPHICS 2:
START=(PEEK(106)tl1*256:POKE 756.STAAT
2818 FOR 1 =1 TO 211 STEP 25 12 56: POkE 752 1
2818 SOUIO 1,1,6 , 8 3280501" XfA!(38):RESTOAE 32816:fOA X
2828 .. EXT I =1 TO 38:AEAO III:XFA$(X , X)=CHA$' .. ):IIIEXT
~;~: ~g~~~I~(:'~(:i~~~~~lf L)5' THEI X
32818 '! U6 ; "
l=L-61 32811 '! U6 ;"
2". M=~16.I"T(RID(I)*')*2:JF ")5' TH 32812 '! U6;"
EI "="-'8 32813 '! U6;"
2'78 R:R.22+IMT(RIO(8)*61*2 : If R)5' TH 3211~ '! m '"
EI R=R - 68 32815 ? "8Y "ICHAEL A. lUllS"
31'0 POkE 77,8:fOR X=1 TO 15 32816 DATA 10~,16'.' 133,283 133 285,1
3818 POSITIOIII 11,II:PRI"T R$(R,A.1):R= 6'.22",133,2'6,165,166,2",11~,1.133.z8
R+2 : lf A)5' THE .. R=1 ~.168,8.177 ,2 85 . 1"5L283.288
1828 POSITION 1I,8:PAIMT ASCA,A.l):A=A 32817 DATA 288.2"'.~38.28~.238,286,165
+2:IF R)5' THEIII A=1
1'18 POSITION 1I,6:PAIMT R$(R,R.l)
38"8 R=A-2 :IF A(1 THEM R=At68
3~:~,2~~U~~~&~:~H~~Is?~AESTOAE 32118
32831 AEAD X:IF X=-1 THEI RESTOAE :AET
3'~5 If X=11 THEI GOSua 2881 U.O
3858 If X)11 THEM 3111 321'" fOR Y=& TO 7:AEAO l:POKE XtY.STA
1168 POSITIOIII 8,II:PRIMT "$(",~I):M=" AT,Z : IEXT Y:GOTO 32838
+2:If ")5' THEIII M:l 32108 DATA 528,178,178.178.170,178,178
3178 POSITIOIII 8,8:PAIIT M$(" , ".l):"=~ ,1 78 ,17 8
2:lf ")5' THE .. " =1 32181 DATA 528,178,85,170,85.178,85.17
1881 POSITIOI 8 , 6:PAIMT "S'" , "tJ) 8,85
3188 "=M-2:IF "(I THEM M="+68 32102 DATA 536.178,8.178,1,178,0,170.'
3185 If X=6 THE .. ,osua 2888 32183 DATA 5"",168.168.160,168,18.18,1
3118 If X)5 THE .. 3168 8.18
3128 POSITIOIII 5,II:PRIMT l$(l,Ltl):l=l 3210~ DATA 552,88 . 8'L88.8I,5L5,5L5
t2:If L)5' THEM l=l 32185 DATA 568,128,lz8 , 168,lbO , lb8,168
1118 POSITIOI 5,8:PRI"T L$(l ,ltl) :l=l. ,17.,178
2:IF L)S' THE .. L=l 32116 DATA 568.2.2,18,18,~2,~2,178,178
31~0 POSITIOI 5,6:PA1.T lS(L,ltl) 32187 DATA 58",23~,18",~6.13,,~6,186,2
3158 L=l-2:IF l(1 THEIII L=Lt68 2~,171
3168 .. EXT X 32188 DATA 610.16 7,2 8 ,11 ~ , 288 ,1 1~ ,15 6 ,
3165 GOsua 28 81 3',178
3178 L=l-2:1f L(1 THE .. L=L.6.:M=M-2:IF 3218' DATA 618,178,8,178,255,255 , 178,.
"(1 THEI M=I+68:A=R-2:lf A(1 THEI A=R ,17 8
•••
3J88 AETUAI
~188 If CHA$(f) = "~" A.. O CHASes) () .. ~ .. T
32111 DATA 616,1.171,7,175,31 , 1'1,127 ,
755
32111 DATA 62~,255,127.1'1,15',175,167
HEM N=2 ,171,16'
~118 If f=CH AID S=CH THEM W=5 32112 DATA 776,2,82 82,81,1 81 81 81
4.828 IF F=" A"O S=" AID T=" THEM N= 32113 DATA 78~,17.,168 , 128.'~,' •• '.,1,
18 8
~825 If f =', AID S=" AID (T=08 OR T=S 32tH DATA 7'2,I,5.S,21,21,5,5 Ll
0) THEI N:l. 32115 DATA 818,64,88,8',8" , 8",al.81,6"
~838 IF F=181 AID S=111 A.. D T=181 THE. 32116 DATA 818,2 II 18.4.2 42 18 11 ,2
11=14 32111 DATA 816,128,160,166,1&.,168 , 1"
4..35 If f =111 AND S=111 A.. O (T =08 OR T ,160,128
=51l THE .. N=1" 32118 DATA 82",1,2,1 , 2,5,18,21,3
"."8 If f=I'3 AMD S=183 AID T=1 13 THE .. 3211' DATA 832,8,128,6",128,6~,161,8',
11=18 171
~8"5 If F=181 A"O S =1 83 AID (T=OB OR T 32128 DATA
=58) THEM N:J8 32121 DATA
~8S8 If f =DB AaO S=f A.. O T=S THEM Me21 12122 DATA
4.852 IF F=D8 AID S=SB AID (T =08 OR T=S
B) THEM N=28
•
~
'-'
~
• ~
'"
~
v
~
v
~
'-
VOL. 1 THE A. N .A. L.O. G. COMPENDIUM PAGE 135
HALLS OF
THE LEPRECHAUN KING
16 K Casse tte l4 K Disk
by Keith Evans and Ted Adkinson
Lin es 9270·9290 - Data for "Good night. 61, If 1=1 THEM 'OSUII 1518:'OTO 2588
6'5 If 1=37 'HEN KEY =I:lIZ='I:fOA lZ=6
ladies ... " 8 TO 48 STEP -1:50UNO 8 LII LI8,8:S0UND
Lin e 9300 - Sound effects of gold bei ng I t lZI,II,8:lIZ =ZlZ - 1:NEKl ,Z
686 SOUND 8,8,8,8:50UND 1,8,8,'
cashed in 615 If J<)15 THEN COLOR 32:PlOT Kl,Yl
Lines 10000· ) 0020 - Color rotation suh. 628 COLOR 36:PLOT X,Y
622 If K=500 AND V=5001 AND KEY=I AID
r outine STRI'(8)=8 THEN COLOA 32:PLOT SD,SOI
623 If X=SC AND V=SCI THEN PGOLD=PGOLO
+~OLO:COLOA 3':PLOT SC,5Cl:K=AX:Kl=K:Y
=AY:Yl:Y:GOLO=8:COSUB '31'
624 If 8AG5<=.8 AID 1=3, 'HEN 588.
638 MM=tMJt-1
64' If MM=1 THEI 518
658 LOCATE MH - l,MY,Ol
668 LOCATE MX,MY - l~02
1 elR :X =18:Y=1:HX=17:MY=2 : Ml=18:Yl=1 670 LOCATE HK+1,HY,D3
5 GRAPHICS 2+16:1 116:" ":? 116;" "
6 ? a;" THE tt6LlS Of THE":? 116;" l :~: \~C=l~MHKMA~+~~~~ THEN 751
[PRECHtl. KIll''':? 1J6; I I . . 788 If K=MX AND "V)Y THEI fO=2:fOl=1
7 ? 116;"
6 ? U6;"
, ? 116;"
116;"
?!fJJ;" "
crea1:@d":? 116;" "
,
" ":? 116;" ":1
718 IF K=MM AND MY<Y THEM fO=4:fOl=8
728 If Y=MY AID MK)X THE I f~ = l:rui = i
131 IF V=MY AND MK(X THEN fD=3:F01:a
748 GOTO 7,.
18 FOR Z"'=l U •• ':MEKT ZZ 758 If MK<X THEN fD=l
Z 169 If HK>K THEM fO =l
128 POKE 186,PE[I((186) - 2 77' IF MY<Y THEI FOl=4
138 GRAPHICS 1+16 7a8 IF ~)V THEN fOI =2
158 A: PEEKeJ861*256 7n AE"
1'8 SET=PEEK(186J 7'5 If FOl<>8 THEN '88
28. POKE 156,5El a •• If fO=4 AND 04< )3 5 T"EN AO=4:'OTO
228 fDA C=8 TO 7 1158
218 PDICE tII+C, 8 a18 IF fO=3 AID D3()35 THEN AO=3:'OTO J
148 NEMT C 1158
258 fOR C=8 TO 63 82. If fD=2 AID D2<)15 THEI RO=2:'OTO
268 READ CHAR 1158
278 POKE A+C,CHAA 838 If FO=1 AND 01<>35 THEN RO=1:'OTO
288 NEMT C 1158
3 " fDA C=64 TO 7J:POKE 84. AD=IIT(R.0(8'*4)+1
378 fDA C=72 TO ":POI(E 858 If RD =l AND Dl=35 THEI B48
371 fOR C=88 TO 87:POI(E 868 If RD=2 AND 02 =35 THEN B41
372 fDA C=88 TO '5:RE40 878 IF RO =3 AID D3 =3S THEN 848
CHAR :lIEKT C 888 If RD=4 AND D4=35 THEN a48
3'5 If TIM} =J AND TI"(3 THEN RESTORE 1 an (iOTO 1158 v
•••
". If TI"}=3 THE. RESTORE 7888
' I I NAY5=O:If fO=l AMD 01<)~5 THEN WAY
5=WAYS+l:Nl=1
"7 TIM=TItttl '.2 If fO=2 AID 02<)35 THE. MAY5=MAYSf
".
...
•••
u.
R.
NN=2 : If TIN:! OR TIMe5 THE. MM=1
READ GAl,CR2,GA3,eR4
If 'Rl =- l THEM GOTO 44.
COLOR 3S:PLOT CRl,GA2 : DAAMTO 'Al,e
ue GO TO 4.9
.u8 REAO 1:01. (;2
I: WZ =1
'14 If fD =3 AND 03<)35 THE I NAY5 =MAYS+
1: Ml =1
'16 If FO=4 AND 04( )35 THEI NAY~=NAYS+
1 :N4 =1
'08 If FDl =l AND 01<)35 THE. NAY5=MAYS
+1: Nl1 =1
458 If 61: - 1 THEli 588 '18 If FDl =2 AND 02<)35 THEM NAY5=MAYS
469 COLOR 131:PLOT ~1,G2 +1:N22=1
411 GOTO 44. '12 If fDJ =3 AID 03<)35 THEN MAY5=NAY5
511 IF TI"<4 THEN COLOR l5:PLOT 3,2:PL +1: M33 =1
OT 7,3:PLOT 6,3:PLOT l,16:COLOA 12:PLO '14 If fDl=4 AID 04< >35 THEN NAYS:NAYS
T 12,14 +1: N44=1
512 BAe S=8 :DBAeS=8:COLD =.:KEY=I:If TI" '16 If NAY5 =2 THEN 4880
<4 THEN COLOR J7:PLOT IB,22 '18 IF Nl=! THE I RD =l
5.3 If TI"<4 THEM RESTORE 1128 '21 If M2:1 IHE. AO =2
584 If TIM}=4 THEI RESTORE 78'I:LOCATf '22 If NJ =l THEM RD:3
18,11,12 :lf Z2 =32 THEN COLOR J7:PLor '24 If M4=1 THEM AD =4
11,11 '25 GOTO 4878
586 K=18:Y=1 : REGD AMX:READ AMY:MX = A~: '26 GOTO 1158
MY =RHY:Kl=19:Yl =1 ,,, GOTO 518
587 READ ~DO,SDOl,SD,SDl,~C,SCl,K,E,AK I I •• DATA 178,84,124,178,14&,254,48,18
AY,III 8
~18 Kl =X:Yl=Y 1818 DATA 126,68,66,223,28',21',66,68
515 POKE 711 , 251 1828 DATA 178,85,178,85,178,85,178,85
516 POkE 77,0 1830 DATA 61,126,21',255,18',1'5,126,6
528 IF STICK(8)=15 THEN GO TO 5118
538 J=STlCk (I)
548 IF J=11 THEN K=K- l
•1835 DATA 8,8,7,253,85,87,8,0
1831 DATA 2a,54,11'~6S,II',11,,11,,127
558 If J=7 THEN X=K+l 1838 DATA 24,24,126,126,24,24,24,24
561 IF J=14 THEN Y=V- l Ill' DATA 31,15,6',24',137,138,14',248
57. If J=lJ THEM Y=Y+l 1840 DATA 13,13,14,13,2,14,4 . 14.5.15.4
5a8 LOCATE x,Y,I:If 1=35 THEN X=Kl:V=V , IS,SL 16 • 8 ,16,15,15,16,15,13,16,14,16,
1 2,18,~,18,7,18,',18,15,18,17,18
5'8 If 1=138 THEM GOSU8 288. 1141 DATA 1,8,18,8
5'5 IF 1=38 THEN GOlD =GOLD+DGOLD:BAGS= 1850 DATA 2,1',3,1',7,1',',1',11,1',13
DBAeS:FOA Z2 =-38 TO 38:S0UNO ',ABS(ZZ) , 1',5,28,1,28,16,20,18,20,2,21,3,21,5,
,18,a:MEXT ZZ:SOUIO 8,8,8,8 21,7,21,',21,14,21,2 .22 ,3,22
VOL. 1 THE A.N.A.L.O.G. COMPENDIUM PAGE 137
'III SOUIO 1,8,1,8 Quir ing much less memo ry. They are fai rl y easy to
'11' FOR ZZ=l TO 5 : NEKT ZZ
U2. GOTO ,.11 design. Each character can be one of four different
U31 RETURN colors. Step one is to design so me cha racters. Here's v
'lSI RESTORE '278
'168 READ DURATIOI : Yf DURATIOI= - l THEI Smiley as an example:
RETURN
'178 DURATIOM=INTCDURATIOW*ll)
'181 READ PITCH :I F PITCH=8 THEM '288
'1'8 PITCH=PITCH*3
'211 SOUN~ a,PITCH,ll,e
'218 SOUND I,PITCH+l,II ,8
'221 fOR ZZ=l TO DURATION:NEKT ZZ
'238 SOUND 8,1,1,8
'2.8 50UNO 1,8,8,8
'258 fOR ZZ=l TO 3:NEXT ZZ
'269 GOlO U68
'278 DATA 2,'7,2,61,1,81,3,68,2,.7.7,6
8,1,53.3,53,2,.7,2,68,1,'5,2,'5,1,'5
'288 DATA l L.7 l L .7,l L 53,1,53,3,68,1,8 Make an 8 by 8 grid, mark the blocks to be filled v
,1.5,.7, .5,~3, j •• ' , 1,:»3,1,'7,1,'7,2,'7 in, the n add lip the correspond ing numbe rs to de-
.1,53,1.53,2.53
'2" DATA 1 •• 7.1 •••• 2 •• 8,1.5 , .7 •. 5.53,
1.69.1.53.1.'7,1,",2,".1.53,1,53,1,.
termine its POKE value.
7 Ll,S3.3,68 L 1,', - 1 Followi ng is a program which defines a space and
's18 fOR ZZL=l TO 3:fOR ZZ=2. TO • 5TE a Smiley cha racter, and then prinrs out a pictu re of
P -l:~ OUIO 1,2',18,ZZ:NEXT lZ:SOUIO ' . Smiley o n the screen .
8,8.':NEXT ZZZ:AETURI
188.1 fOR Z=l TO 3
18818 A=PEEK(718)
18828 POKE 118,PEEK(711):POKE 711,PEEK 18 ~RAPHICS2+16:RE" STAAT OUT WITH A v
(11') : POKE 118 PEEK(71":POKE 71',4:ME ~RAPHICS STATEMENT
XT Z:fOR 8=1 Tut I8:NEKT B:AETUAN 28 POKE J'6,PEEKCI86) -2 :AEH SET ASIOE
2 PA'ES Of MEMORY FOR THE CHARACTER SE
• T
31 CHBA5E = PEEK'1'6)~25 6: REH THIS IS WH
ERE THE CHARACTER SET WILL BE POKED IN
TO HEttOAV
C HEC KSUM DATA '8 SET= PEEk(106):REH THIS IS WHERE THE
CHARACTERS WILL GO IN TERHS OF PA GES
(Sec pgs. 7-10) Of " EHORV
SO READ UALUE:.1F UALUE= - j THEN '5 :REH
1 DATA 1,783.82,66'.687,331.3'7,37.1" READ IN PART OF A CHARA CTER
,53',211, '26,288,786 738 6"1 60 POKE CHBA SE+C,UALUE:RE" PUT THE NUH
258 DATA 162.",383.7.2.113,712,721.6' BER IN ttEMORV
2,282,323,121,875,275,'55,6'7,7122 78 C=C tl :~O TO 5 8
'3' DATA 7'.,833.6'6.281,728, •• 5,337,5 75 REH DATA FOR SPACE
1,'2',826,'26,151,238,'5',36,7568 80 DATA 8.0,0 , 0,0,8 , 8,0
538 DATA '18,7',785,'3,'1.215,828,681, 85 REM OAT A FOR SMILEY
'8',731,'83,17,'73,483,857,8283
62. DATA 488,68',"3,82',812,831,81'.1 -,
'0 DATA 60,126,21'.255.18'.1'5,126,68,
'5 POKE 756, SET:REH TELL THE COMPUT ER
82,'18.'11.'17,'18.1'6.'2','2',113'3
778 DATA 167.17 8,113,'18,228,22.,228,2 WHERE THE NEW CHARACTER 5ET IS LOCQTED
16,'77 8.6 853,861 867.'83.668.8382 100 COLOR l:PLOT 5,5 :REM PUT S SMILEY 0
'82 DAtA 668,661.6~'.21,18.'8,58,'18.8 II SC REE . AT 5,5
18.887,811 815,'7','78,7'6,8'" 118 GOTO 110:REM EIIOLE SS LOOP FOR DI SP
111. DATA 226 L 165 L 21. L787.'7,68,163.81 LAV PURPO SES
,75'.1 37"1 8,~'8,.16 •• '7,'12,S'28
11'5 DATA .18,873,132.'16,.".611.85'. To determine the number fo r the COLOR st:lte ~
72',%51,11',657.327,.'1.783,J3',7,7,
2511 DATA 72'.23'.2'8,211,211."'.282, ment in line 100: fi rst. Smi ley is to be grecn. Color
783.213 871.731 L517,77 •• 218.'11,7318
38., DA t A 81' , 6,7,667,661,668,1'5,662, registcr number I normally contains green, so it is
78 8 8.2 '13 1,5 1. 15,71',7651 used. Sm iley has been defined in the p rogram above
.178 DAtA 766,715,~2'.726.'11.5".557.
551,55't311.7S3,21. , 818,251.772.'I'. as the second charac ter in the redefined set. (The
' I I ' DA A 625.'5,887,11'.617,611.615,6 space was the first.)
1',7JI,I."1.'85.3'8,561,836,'388 With these pieces of information I looked up the
61.S DATA l'5,'51,5'5.618 , 685.3'3.6'S,
'7·L·57t211L'·2,118L251L'7 •• 711, •• 2. number in a chart. like the following one:
812. DA A 5'6 •••• 1".11 •• 11.,"7.8'3 •• COLO R REGISTERO ~ 32.33 thwugh 95
11,3'2,6'8.221.21',581,7'3,'11,7'12
'158 .ATA %2&."5.13',&'5,55',1",3'2. CO LO R REGISTER I ~ O. I thwugh 124.
6,.,22J 225 L5'1.751.514 , 3'3 , 115.7611 ( 125*). 126. 127
'1" DA t A 8~2.JI',6'.626,1"7
COLO R REGISTER 2 ~ 160. 161 th w ugh 223
• COLO RREGISTER3 ~ 128. 129 thwugh
154, ( 155*). 10;6
For those interested, here are some of the through 255
1< 155 se lects the sa me thing as 32. 125 has no
tech niques used in this program. First is ·' redefined
character sc ts," wh ich when carefull y lai d out can effect.
simul ate a high resolutio n graphics sc ree n, bu t re- Smiley'S color is set by color register I, so look in
VOl. 1 T H E A.N.A.l.O .G. COMPENDIUM PAGE 139
CH ECKSUM DATA
(Sec pgs. 7~ I O)
STUNTMAN
16K Casse tte 24K Disk
by Steve n Pogatch
Your stunt man has been hired to climb to the top Lines 3000- 4 000 - Section 2 (flower
of every building he can find. This is not as easy as it pots)
may seem, though, because the tenants of the build~ Lin es 4 000-5000 - Section 3 (bird)
ings will do anything to get you off the building. Lines 5000-6000 - Section 4 (King Kong)
There are six (6) levels to each building, each pro- Lines 6000-LOOOO - Section 5 (gi rders)
gressing in difficulty. Lines LOOOO- L1000 - Bonus stunt man
In the first section, windows constantly close to Lin es lLOOO-32000-Goon to next build-
keep you from getting past them. Next, men stick ing (inte rmissio n )
their heads out of the windows, trying to get in your Lines 32000-325000 - Redefines charac-
way. After that, flower pots fall from the window ter set
ledges, closing all windows in their way. After pass- Lines 32500-32700 - Title
ing this section, a crazy bird drops girders on you. Be Lines 32700-32750 - End of game
careful here - they can be deadly if they hit you on
the head. Once you get past the bird, you have to
avoid King Kong, waiting for you on his part of the 1 'OSUS 32888 : CLR
bui lding. He is very angry and is throwing down any~ 2 GOSU8 32588:SH=6:8=1
5 GRAPHICS l:POKE 756,PEEK(186)+1
thing he can find on top of you. Last (but not easiest), 11 SETCOLOA 2,.8 , 8:POkE 710,~':POIE 711
girders (3 lanes wide) come crash ing down from the ,4S:fOA A=8 Tu l~:POSITION 5,A:? 116; " e
I!'l!'eel!'eeeeee":NEKT A
building. Look out! 28 fOR A=5 TO 16:f=RND(8)*~':If f}l TH
If you are lucky enough to get through all of this, EN POSITION A, f: ? a:6;"f":IIIEKT A
38 K=18:Y=18:0K=K:OV =V
there will be a brief intermission telling you to go on '8 POSITION OK,OV :? 116;"e" :POSITIOIII OK
to the next bu ilding. ,OY+.!: ? 116;"e"
'1 LOCATE K,.Y/sZ:If Z=182 OR Z=225 OR Z
On the top left corner of the screen are three =66 THEIII GO~U 1888
numbers. The first one represents the section, the U POSITION K, Y:? 116; "0"': POSITION K, V+
second represents the building number, and the third I :? 116 ' ''G:I''
43 If 5C=18888 OR SC=S8888 OR SC=18181
represents the number of men you have left. If you I THEN SH=S"+1:G05U8 18888
'4 If Y=8 THEN L=L+1:GOTO 5
manage to score 10.000, 30,000 or 50,000 points. '5 OK:K : OY=Y
you will be awarded a free stunt man. The score is .6 SOUIilD I,Y+21,3,15:fOR 6: 1 TO 15:NEK
T A:SOUND 8 8,8 8
displayed in the lower left hand corner. You can '7 G=RND(8)*':I~ G}3.7 THEW fOR A=S TO
move left. right and up with the joystick. For every 16:POSITIOIII A,RIIID(8]*18 :? 116 :"f" :IIIEXT
movement you make, you are rewarded 50 points. •
'8 0111 L GOSU8 2888,3888,'888,5888 ,688 8
:If L=6 THE III L=8:B=8+1:GOSUB 11888
You start out with 6 stunt men. Good luck climbing
., POSITION 8 Ll':? a:6;SC:POSITION 1,1:
- you'll need it. 0 ? a:6;L:POSITIu. 1,2:? a:6 ; 8 : POSITION 1,
3:? 1I6;SH
51 If STICI(8)=1' AND Y}8 THEN Y=Y-l:S
C=SC+58:GOTO '8
68 IF STICK(8]=11 AND K)5 THEN X=X-l :S
The program. C=SC+58:GOTO .8
78 IF STICK(I)=7 AND X(16 THE. K=K+1:S
Lines 1-30 - Initialization C=SC+58:GOTO '8
, Lines 40-1000 - Movement of a playe r, 188 (iOTO .2
1881 ~OU.D 0,41,6,18:FOR A=l TO 25 : NEX
activate obstacle(s) T A:SOUIilD 8,8,8,8:S0UND 1,8,8 , 8
Lines 1000-2000 - Death (fall) of stunt .1818 fOR 6 =Y TO 18:POSIT.lOI XI.A:? a:6 '"
(!f": POSITION X, A+ 1:? 116; '~' : PO~ITION X I
m,n A- l :? 116;"e":POSITION K,A: ? 116;"e"
Lines 2000 -3000 -Section I (windows & 1828 SOUIilO ',A+28,10,18:NEMT A:SOUIilO 8
,8,0,I:SH:SH- l
men) 1138 If 5"(8 OR SH=8 THE. GOTO 32711
VOL . 1 THE A,N.A.L.O ,G . COMPENDIUM PAGE 141
'-'
'-'
CH ECKSUM DATA
(Sec pgs. 7-10) v
'-'
'-'
'-'
'-'
'-'
'-'
'-'
'-'
• v
'-'
\..-
'-'
v
'-'
'~
v
v
'-'
v
• ~
'-'
'-'
v
v
'-'
'-'
v
\.
VOL. 1 TH E A. N .A.L.O. G . COMPENDIUM PAG E 143
T.
DUNGEONS &DRAGONS
CHARACTER GENERATOR
2 4K C assette 32 K Di sk
b y Bob Cu rtin
When I first bought my ATARl, one of the things I it's a simple matter to just look it up; while it's not so
put high on my list of priorities was to try one of the simple ro get the computer to do what it's told nor to.
computer adventure games on the market. I wasn't For those of you who want to ignore the limits, the
impressed with the game, bur I was impressed with computer doesn't know any betcer. Indulge.
the case of play. Pressing a few buttons took care of I fudged a couple of other values, too. For in-
movement, combat, encumbrance, game time and all stance, line 195 contains the random number gen-
the rest, and it dawned o n me that my co mputer erator for the characters' basic abiliti es. Notice that
could be a big help to me in m y ongoing DUN- va riables A and C havea +2 for the add -on number.
GEONS & DRAGONS campaign. I set to work I did th is to give the players a b rea k . All you hard-
writing a series of utility programs for it. This, the line Dungeon Maste rs out there gnashing you r teeth
fi rst, generates both player and non-player charac- ca n switch back to + 1 if you want. (Essentially,
ters in an average of about fou r minutes. Normally, it they're now rolling 306+2.)
takes anywhere from twenty to forty minutes to T h e p rog ram.
generate a character "by hand," and then there's a As I said, there are five inputs. They are, in order:
strong possibility of missing a few modifiers along name, gender, race, class and character level. Here is
the way. The compu ter always remembers. an example of each.
Though the p rogram was written to take the work Name -after the title, the computer will ask fo r a
out of generating characters, the Dungeon Master character name. This is the only "open" input, and
and players are still left with choices to mak e. As in - although you have to work at it - it can be
0&0, the player still has choice of name, gender, screwed up. For example, entoring a couple of
race, class, and cha rac ter level. Those categories control cha racters through the escape key will cause
greatl y affect the final character stati stics, and it some grief later on down the line. Other than that,
would be an injustice to randomly choose them for anything but an input of YES, NO, Y or N will be
the player. By the same token, therearecertain mini- taken as the cha racter name. If you don't want a
mum ability scores, o r racial requirements, which name, just hit the return key. Entering NO or N will
must be met to assume the role of a particular race or fe tch a list of names from memory as suggestions to
class. The user docsn 't have to know or worry about the player.
it ; the computer will figure it all out and teU the GEN DER - The computer will only accept M or
player if he or she doesn't measure up. The player F. Lower case letters will not work.
may continue to choose alternatives until o ne of his RACE and CLASS - Only the exact initials
choices meets :lll requirements. The program will listed in parentheses on rhe respective menus will be
then continue on. accepted.
The system used is based on the standard AD- C HARACTER LEVEL - Any level between I
VANCED DUNGEONS & DRAGONS gom" and 18 (inclusive) will be accepted. If a value below 1
There is an omission, however - by choice. not is entered, the value will be upped to 1. If a value over
error. I didn't incorporate the m:lximum level re- 18 is entered, a short message will be displayed and
strictions imposed on ce rtain races , such as an Elf the program will loop back for another input. Any
being able to rise no higher than 7th level as a fighter. illegal ent ry, such as a letter instead of:l number, will
If a Dungeon Master wants to adhere to those limits, also cause the loop back for re-entry.
As the character builds, the comp uter docs the awa y dungeon, killer dungeons are , if no t worse, at
appropriate ca lculations, compa ri sons and modifi ~ least as bad. Su rvivi ng a nd advancing up the ladder
cations between inputs, and then displays the results. of experience - developing a character is what D&D
After the info rmatio n has been copied from the is all abou t. To have a developed character snu ffed
sc reen, the pla yer may conti nue the p rogram by ou t by the undetectable, unseeable o r unkno wable is
pressing an y key. bound to cause you to ga in a reputation as a "cheap
P rogra m o utline. shot" dungeon master. Having a c haracter killed
Li nes 5·26 - Initial iza tio n because of one's own recklessness o r bad luck or a
Li nes 50·75 - Character Race Modifier bad choice bcf«.'C<.'l1 alfernmitiCs can be lived with. But
Routine the skewering of some hapless player for no rhyme
Lines 80 ~ 82 - Custom Display List or reason is unforgivable.
Lines 86 ~ 88 - Tide (so, my vanit y's show- Give yo ur playe rs a break. Pick a num ber - (use
ing). This can be deleted by eliminating lines80 fi ve - and let each player ru n off that man y char-
through 96 and changing the last statement in acters. The player ca n then choose o ne o f them to
li ne 20 to GOTO 100. start the game with , and shou ld that character co me
Lines 1 00 ~1l1 - Thief, Magic~use r , and to an untimel y end. there are fo ur m o re fro m which
Monk Data to choose. That way, no more valuable playing time
Lin es 159- 179 - Name Input is taken up generating characters.
Lin es 180· 187 - Gender In pu t Norma ll y, novice players sta rt at level o ne. How.
Lines 190 -1 92 - Race Menu ever, after a player has ca mpaigned fo r some time , it's
Line 195 - Basic Abili ty Scores usuall y the practice to let him o r her start highe r than
Lines 200~225 - Race Input that. If they ha ve a cha racter killed off, you co uld , for
Lines 226·229 - Ability Score Display instance, have the m start a co uple of levels lowe r
Lines 235-243 - Class Menu and Class than the character who was killed . Another way is to
Input roll a si x or eight-sided die.
Lines 2 4 5~ 25 4 - C lass Trigger and Gold Above all , be fai r. Re me mber that you, and con-
Piece Generator sequently all of the creatures you co ntrol, have per-
Lines 263·269 Exceptional Strength fec t intelligence. Your players d o not; they on ly
Routine know what you tell the m. It behooves you to give
Lin es 276-332 Hit, Damage, Ar mo r that little extra . If a player ca n 't see something, don't
Class, and Dexterity Mod ifi ers wa it for him to ask; tell him .
Lin es 335·3 41 - Modifier Display Good luck. Good dungeoning. 0
Li n es 345 · 374 - Height and Weight Rou-
tine (modified by race and gender )
Lin es 3 75 ~4 38 - Hit Poi nt Generation
5 TRAP 8888
Ro utine (modified b y race and ability) II DIN MS("J.Z$(J8',R$(J81.P$(181.E$(
Lines 460-475 - Thieves Ability 21'.DWS(281".$(28' . HE$(221 . 5TS('),WIS
'7'6I.$(28).D~$CJ'J L CM$(28J L CH$CIIJ
Lin es 500·530 - Magic-user Abilities 121M HA$ (22J HO$CZ2'.B$(lsJ,V$(1",T
Li nes 550-599 - Monk Abi lities (1"8J . MUC2·L,i.F(6).J(15,,G$(10) . ~(I'
) .MUJ' . . . U( , " , tlSU.) ,0$ ( 8 )
Li n es 2000- 2020 - Na me List 15 ZS=" DOES MOT HAUE EMOU'"" : 5T$ ="5TR
Lin es 2550-2730 - Race limitatio ns EM'TH " : II$="IMTELLIGE.CE tf : MI$=tfNISDOM"'
:DK$="OE~TERITV " :C"$="CO"STITUTIO""
Lines 5000-5975 - Class Limitations 18 CH$="CHARISNA":BS=" TO BE Atf : ES=" EL
Lines 6132-6200 - Thief Abilities Mo di - UES CA .... OT BE ":DWS="DWARVES CA ... OT BE
,, : ,.$ ="'.OtE5 CA •• OT BE "
fie rs (by race and ability scores) 21 HE$="HALf-ELVES CAJlJlOT BE ":HAS="HA
Lines 7000-7055 - Psionics Routine LfLII'S CAIIOT BE u:HOS=uHALf-ORCS CAl
lOT BE ":'1'$=" IO . AT TACkS"
Li n es 8000-8020 - Input Error Ro utine 25 Kl =1:K2=K1*1(1 : I(J=1(1*1(2:1('=I(I*I(J:1(5=
A few suggestio n s for the OM. 11*K':K6=k3*K3 : k1=14*13 : 1(8=12*.6 : k' =1(1
*18:118=1('*Kl:K11=25:K12=58:KI3=180
Neve r lose sight of the fact tha t the o nl y reason a 26 K14=15:KI5=125 : K16=1 58 : 117=288:K241
player will pa rtic ipate in onc of you r D&D sessions =241 : KO =KI - Kl:'OTO 88
58 fOR £=kl TO K6:J(EJ=FeEJ:IEKT E:0=8 v
is to have FUN! Nothing will dampen the enthu- : If R$=uH " THEI Y=Kl : 0=K5: RETUIIU,
siasm of a new player fa ste r than being fo rced to 5. If A$="E" THEIII Y=K2:0=K5:J'K4) =J(K4
)*Kl : J(KSJ=J'KS) - Kl:RETUA ..
assume the ro le of a character too weak to take any 56 IF A$="O" THEI '1'=13: 0=K5: J '1(5) =J CK5
kind of in itiative, do any exploring , o r eve n stand )*K1 : JCK6) =J'K6) - Kl:AETUA.
58 If A$=", .. THEM Y=U:O=kS : RETUAM
fast with the rest o f the party. Force your players into 68 If R$= " H£ " THEM Y=K5 : 0=1(5:'OTO 75
a position of constant im potence and you' ll soon 62 IF R$= " HA " THEM Y=K6 : 0=IS : JU U=J '1(
1) - Kl:J'k4) =J'K4)*I(I : AETUAI
find your dungeon devoid of adventurers. 64 If R$="HO " THEI V=k7: 0=K5 : J 'KU =J (I(
Although I'm certainly not in favor o f [he give· 1)*Kl : J(I(SJ =JeI(S)tl(l:J(K6' =J CK6) - K2 : RE
TUAI
VOL. 1 THE A.N .A.L.O .G. COMPEND1UM PAG E 145
- n ? :1 :1 .. GOOD LUCK!
EOllnIG!": fOR £=K1 TO KJ8 A 3*5: IIE)(T E
188 fOR 1 =1 1 TO 18:FOR K=Kl TO Kll+K8:
GOOD DUll'
.. CH
RE~O N:TCM.I' =N:NEMT M:NEMT I
181 FOR 1= 1 TO K3:FOA X=K' TO K18+K':
RE~O " : ~CK,I' = N : NEKT M:"EKT I
182 FOR 1 =11 TO k4:FOR M=Kl TO K18+K7: "WHAT CLASS";: IN
RE~O N:MKCK,I) =N:NEXT K: NEXT I
183 DATA 38,15,48,45,58,55,68,65,78,88 THEN 0=15:Z=ll:'P=INT(15
,'8,188,185,118 , 115,125,125,125,25,2',
11,17{42,47,52,S7,62,67,72,77,82,87 THEN O:KS:Z:12:GP:INT(11
184 DaTA '2,'7.",",28,15,31,15,48,45
,51,55,68,65 ,71,75,81,85,'1,'5,",",1 THEN 0 =15:Z:13 : 'P =INT(11
5,11,17,11,48 , 47,55 , 62,78 ,7 8,86,'4,"
185 DATA " , " L " , " , " ,1 0,15,20,25,11 THEN 0 =15:Z =14:'P=INT(11
.31,41 , 4'.56 ,6~,7., 77.85,'1"""",.'
' , 11,18,15,15,18. 28 ,25,15,11,18.35 ,3 5 THEN 0=IS:I=15:GP=INT(11
186 DATA 48,41,58,58.55,55,85,86,87,88
,'8,'Z,'4,'6,'8,",".l,".2,".3,".4 THEN 0=15:Z=K6:GP=I.T(11
,".5,".6,".7,".8,8,8,O,ZO,Z5,31
111 DATA 35 48,45 5 8,5 5 68 65, 78,75,81 THEN 0=15:Z =K7 : 'P=INT(11
,88,81,3S , 4~L45 , 4~ ,55,55,65,6S,'5,85"
S,4.5,5,5,6 , ~,7, 7,8,' ,II,6,7,7.7.',' THE. O=K5:Z=18:GP=INT(6
188 DATA 11,11,14,18,"
18' DATA 1 8,',8,7,7,6,5,4,3,3,2,1,8,-1 ' HEN 0 =K5 : Z=I': 'P=I NT(68
,-1, - 2, - 3 , 158.168.171 , 188,1'8,288,21',
ZZ8,Z30,248,258,Z60 L Z78,288,Z'I,380 0=15:Z=119:'P=INT(1
118 DATA 3ZI,1,1,lL~4,54,32,12,32,2,2,
5Z,52,52, I,3, 4.4.1~.14,16,16,27,28,3'. ? "CORRECT INITIAL 5
212,312,313,413,416,517,528,624 : 'OTO 241
111 DATA 51l,8l1
15' POKE 82.2:'R~PHICS I:POIE 752,1:PO P$="R" OR P$="P" THEN
KE 712 128:POIE 718,128 THE N 265
161 RE~TORE :? U6 :? 116 :? 116;" DUNGEONS GOTO 276
, DRAGOIIS":? 116; "CHARACTER GENEAATION 265 GRAPHICS 2+16:POKE 711,4: 1 UK6:1 U
"171 ? "HAUE YOU THOU'HT OF A NAME":? ..
K6: ? tlI(6: 1 1IK6:" "HI$;" HAS ":'! IIK6;"
EXCEPTIONAL":? tlI(6;" 5TAEN'TH"
fOR YOUR CHARACTER"': INPUT 11$ 2" ? U6 : ES=UT (lll*RNO CKl) +U) :? 116;"
175 If II$ ="YE S" OR N$= "Y" THEN ? "III~L E.S.RAllNG 18/":ES:FOR £=11 TO 2881:
L, "AT IS IT" : :IIIPUT N$ NEXT E
17' If N$=" NO" OR "$ =" 11" THEil GRAPHICS 276 "" = 8:~ = 8 : MA = 8 : HR = 8:1325=325:1335 =
I : POKE 11I,6:POKE 71',I : POKE 751,1:GO 13S
- SUB 2181
.J88 ? "IIIWHAT 'ENDER IS to; 11$'" (tVf)";:
INPUT ,$: 0 =1 : If G$="",' OR G!="f" THEN
O=KS
1 18 IF ES=113 THEN MH=K3:ND= K6:GOTO 11
2'
III
o
If ES)=K13-1' THEN MH =IZ : HD=K5:G OT
IUS
187 I f OOK5 THE. ? "'IUVf DilLY, PLEASE 312 IF ES) =l*kll+ll THEN NH =K2 : HD =14 : '
!": FOR E=ll TO .JS88:NEKT E:'OTO 188 OTO 1:125
1'8 ? U6: ? 116: ? 116 ; " HUMII (H)" 113 If ES) =k12+11 THEN "" =IZ:MD =Kl:G OT
: ? 116 ;" ELf (E)":? 116;" DNA o 1325
Af (D)" 314 IF ES) =k l THEN MH=ll:ND=13 :GOTO 13
1'2 ? 116;" '.ONE ")" :1 116;" 2.
HALFUN, (HA)" :? 116;" HALf-ELf 'HE 315 If A=K'+K' THE. MH=ll:MD=12:,OTO •
)": ? U6;" HALf - ORC (HO)" 32.
1'5 FOR E=ll TO K6:A=INT(16*RMD(ll)+IZ 316 If A=kll+17 THEN ""=KI : ~=ll:'OTO
):8=I.T(16*1.0(ll)+I):C=INT(16*1NO(ll) 1125
+Kl):D =A+B+C:FCEJ =D:NEKT E:'OTO 285 311 If A=KI8+K6 'HEN ND=Kl:GOTO K:l2S
288 POP :? 318 If A=13 THEN ""= - 13 : ND= - K2:GOTO II
285 ? "WHAT RACE"; :IMPUT R$:GOSU8 K12 2.
218 IF 0<>15 THEN 1 "IIIINITIAlS ONLY, P 31' If A=14 THEN MH =- 12:MD=-Kl:GOTO 11
LEA5E!":,OTO 285
215 '05U8 2558 2'
III If A( =16 THEN "": - 11:'OTO 1325
228 fOR E=ll TO K6:If J(E»K'+I' THEN 125 If D=K'+K, THEN MR =Kl:MA= - 14:'OTO
J (EJ =.'+K' IllS
224 If J(E) ( KI THEN J(E)=13 116 IF 0 =1'+18 THEN MR =12:MA=- KJ:GOTO
PAGE 146 THE A.N.A.l.O.G. COM PENDIUM VOl. 1
.
~~;<UI:!:D!DE
fOR I=Kl TO KII A 3*K5:NEXT I
If Z=K8 OR Z=K' THEN 585
+UJ +K5+M ,I<" 501 If Z=KI8 THEN 55B
363 GOTO 372 5.2 GOTO 4'"
36S If Y=K3 THEN H=42+xCK6) : N=KJ4"K4+" 5.5
CJ( 6) 510 ~R::~~C~~; J ~i ~~K~ ~ ~ZriltMIII_"'3:1
366 If Y=K2 THEN H=K12"XCK7]:N=K13-KS+
M(K7)
m
51 5
";HIJeO,I)
? a6:,? 116;" MIHIHU ~PELL ~ " ; NUtB
367 IF Y=K4 THEil H=K6*K6+KCKS]:N=K6*KJ .2>
B+K7+"C(7) 571 ? U6: ? 116; " MtI)(IHUH ~PElL~ "iNUCB
368 If Y=KS THEN H=K12+K6+XCI(8]:N=K8*K , 3)
18+"CK6] ~10 fOR I=KJ TO 4.80:NEHT I
36' IF Y=K7 THEN H=K12+1('+XCI(S):W=K14+ 535 'DID 4'"
I(S""CI(8) 55B CRAPHI CS 1+J6:POKE 712,712:POKE 71
378 IF Y=6 THEN H=30 +XCS) : W=42"M'7) 0,224
371 If V=KJ THEN H=KI2"K6+XCK4]:H=K14+ 55~ ? U6: 1 Uti:? 116 :? 116;" HONI(S tiBl
HCK ') [t. :? a6
3720J=INTCH / 12):02=OJ*J2 :Q3= H- 02 552 '? a6:? Uti;" ~RttOR CL~SS ";MKCl
373 ? a6: ? Uti :? U6;" HEIGHT ";Q1 ; "'" .11
; 03;CHA$ (3 4) 553 ? a6;"
374 ? 116 ;" NEIGHT " ; W;"l BS." 554 If t«CL
37S HPT =KO :0 =K 8 : COTO 480 555 If f« Cl "
388 HP =tNTCK4*RNDCKJ)"K2):RETURN 55. IF .... Cl
185 HP=INTCK6*RNOCKl]+K2):RETURN 557 If f« Cl
3'8 HP =INTCK8*RNDCKl]+K2':RETURN 55. IF t« (L
1'5 HP =I NTCKJ8*RNOCKl]+K 2' : RETURN 5., If f« CL
488 ? "NtHH LEVEL IS "; .$; : IIilPUl L: If 5 •• IF f«CL
Z=K2 THEN l =l+JCJ 561 ? t16 ; I I .!1~' ~ !:~'· ~!!~!~D~·~
486 If L>18 THEIII 1 "lI\:YOU C~II'T SlaRT ~ 5.2 IF HK CL
CH~R~CT E R":? "oUER LEVEl J8. TAY ~ca 5.3 If M(L
1M . ": '? : COTO 4aB 5 •• I f "CL
487 If L( =8 THEil l =J 5.5 I f HI( CL
4B8 fOR J=Kl TO l:IF Z=Kl OR Z=Kl THEil 5 •• If MIC Cl
'OSUB 3'5 5.7 If "" Cl
.,.
418 If Z=KZ OR Z=K4 OR Z=K5 THEN 'OSU8
415 If Z=K6 OR Z=K7 THEN eOSU8 385
5 • • If MK Cl
5.'
57. If "'l
428 If Z=K8 OR Z=K'
B J88
4Z 2 HPT =HPT+HP : NEXT
OR Z=K18 THEN GOSU
J:COTO 43J
IF ""
571 IF ...
572 IF HI(
573 IF HI(
..
427 If E=K'+.' THEN HPT =HPT+tL*K4):GOT 574 IF
0418 575 IF
428 IF ~=K'+K8 THEN HPT=HP'+tL*K 3):'01 57. IF
° 438
42' If E=1<8+K8 THEM HPT = HPT+( ~*kl):60 1
577 ?
578 ?
° 438
438 GOlD 432
sn '?
588 ?
I..
~
~
VOL . 1 TH E A.N .A.L.O .G . COMPE N DIUM PAGE 147
5825 If V=K6 THEN 1 HAS; "NlUC - USERS," 7158 IF PS)=K13 THE. ? "PSIOIIC STREIIC;
:(iOTO KUl TH = ";PST:FOR 1=1 TO 28&8:.EKT I
sa18 RETURN 7155 RETUR.
5'88 If 8<1(11+15 THEN 1 .S;Z$:1 11$;8$ 81.1 ERlll=Z56*PEEK(181)+PEEk CI86'
;"1 ILLUSIOIIST,":GOTO 1(241 a8JI CUR=PEEIC "., : 1 """: "? "INPUT ERROA
5'15 If 0<I(II+K6 THE. 1 1$;Z$:1 OX$;8$ -- TRl' AGAIIII!" : FOR 1=1 TO SI:SOUID I, v
; fll ILLUSIOIIS T .": GOTO 1(241 1+58 , 18 , 8:IEKT I:SOUID 1,8,8 , &
sue If '1=1(3 THEI ? DN$ ; "ILLUSIOIISTS . 88Z8 TAAP 8188:GOTO (EALIJ v
":C;OtO 1(241
5US I f Y=K2 THEI 1 E$;"ILLUSIOIISTS,"
:GOTO KZU
5'21 If l'=1(1 THEN ? HO$;":ILLUSIOIiISTS .
•
":'OTO I(Z41
S'Z5 If '1=16 THEN"? HAS;"ILLUSIOIiISTS.
n:C;OTO I(Z41
5'31 AETURIi
5'51 If A(1C11+1C5 THEI 1 1$:Z$:1 ST$;8$ v
;" MOlIK , ":GOTO 1(141
5'55 IF C(1(18+1(5 THE I 1 1$;Z$:1 MI$;B$
;" KOII(," : C;OTO K141
5'68 IF 0(1C18+11 THEI 1 1$;Z$:1 OX$;B$
;" HOIIK , ":GOTO I(Z41
5'65 IF E(1(18+ll THEI ? .$;Z$ : 1 CIS;B$
;" "OI",":GOTO K141
5'18 IF YOKI THEI 1 "OILY HUMI.S CAli
BE MOIK S ,":GOTO I(Z41 v
5'15 RETun
6118 IF D=18 THEN TCL,I(I)=TCL,KIJ+ICII :
TCL,IZJ =TCL,1C1J+15:TCL,11J =TCL,Kl)+1C5:
TCL,1C4J =TCL, .. 4'+11:TCL,1(5' =TCL,1(5J+18
6131 If D=1C18+1C1 THEI TCL,ICIJ =TCL,KIJ+
ICS : TCL,ICZJ =TCL,ICZJ+KI8:TCL,1C4J=TCL,1C4'
+1C5:TCL,1C5J =TCL,1C5J+1C5
613Z IF 0=1(18+16 THEI TCl,I(ZJ =TCL,ICZJ+
.5 .
6133 IF D=118+I(Z THE I TCl,1(4J =TCL , K4) -
.5
6134 IF D=lll+ll THE I TCL , KIJ =TCL,KIJ-
ICS : TCL , 1C3J=TCL,K3J - KS : TCL,K4J =rCl,K4J -
.'0
6135 If Y=K3 THEN TCl KZJ=TCL IZJ+Kll:
TCL,K3J =TCL,K1J+1S:TC(,X1J =TC(,IC1J - 1C18
: TCL,K8'=TCl , 1(8) - ICS
61 36 If V=IZ THEN TCL,KIJ =TCL,Kl)+KS : T
CL,K1J =TCL,K1J - K5:TCL , K4J=TCL,14J+ICS : T
Cl,KSJ =TCl,K5J+kl':TCL,1C61 =TCl , k6'+ICS
6111 IF Y=K4 THEN TCl,ICZ)=TCL,KZ)+KS:T
CL,KIJ=TCL,IC3J+KI8 : TCl,K4J =TCL,K4J+KS: v
TCL , KSJ =TCl , KS'+K5:TCL,K6J =TCl,K6J+l1
61 38 IF Y=K4 THEN TCL,K1J=TCl,K7' - KI5
613' IF Y=K5 THEN TCL,ICIJ=T(L,Kl)+Kll:
'(L,IS' =TCL,KSJ+K 5
614& :IF Y=16 'HE I TCL , ICIJ=TCL,II'+ICS:T v
CL,ICZJ =TC l ,I(ZJ+1C5 : TCl , K3, =T(L,1C1 '+1C5 : T
CL,1C4J =TCL , 1C4J+KI8
6141 If Y=K6 THEN TCl ICSJ : TCL,ICS)+1C18+
K5:TCL , K6' =TCL,6J+1C5:tCl , IC7, =rCL,I(1) - 1C v
11+KS : TCL,1C8J=TCl,18' - 1C5
614Z If Y=K7 THEN TCL,ICI'=TCl,1(1)-KS:T
CL,KZJ=TCL,IZJ+K5:TCL , K3J=T(L,K3J+ICS
6143 If Y=K1 THEM T(L , K6, =TCL.K6J+1C5:T
CL,K7) =TCL , K7)+KS:TCl,K8J =TCl,IBJ - kl'
6Z88 RETURN
71.8 AI=IMTC2. 5*D - 16J:ANCIITCI.5*C- 16) v
: AC =INTCI.5*F - 16J
1181 IF AI<8 THEIi AI =8
71.Z :If AW <8 THEIi AW=I
7883 IF AC<I THE III AC =&
71'4 AT=AI+AW+AC
7885 PS =IIIT(kI3*RIOCK1)+AT+l):lf P~) = K
• v
13 THEN 1 U6: ? R6;" " ; II$;" HA~":1 R6 ; "
P~IO. I C ABILITY"
7818 AI =B- IZ:AN:C - 12:AC=F- IZ : lf AI <8 1
HEM AI=KI
7111 I f AW(KI THE. ANl-1C8
1812 If AC(K8 THEM AC =KI
781 3 AT=AI+AW+AC
7115 ", =K8:0T=18:If 8)16 THEN OT =OT+Kl
7&Z8 If C) 16 THEN or =OT+K1
7125 IF F) 16 THE M OT=OT+ll
7838 If OT=k Z THE. MP =kZ
713S IF OT =K3 THE. KP =1C4
7848 P~T = INTCKI3*R.D(KIJ+KIJtAT*~
7 ... S IF PS)=KI3 THEM 1 "I{PSIONIC ABIU
TV = n ;PST*KZ
VOL. 1 THE A. N.A.L.O.G. CO MPEN DIUM PAG E 149
HOUSEKEEPINCi 2
'oJ 32K C assette o r Di sk
"- by Bob C urtin
With the addition of the random access capability the Dungeon Master ma ke that choice fo r the mon~
of a disk drive. Dungeo n s & Dragons House· stets. As in a normal dungeon, you'd have some sort
kee ping (d isk ve rsion) comes into its own, with of graphic representation of the battle set up on the
several new func tions, bi late ral combat, and a dras· table top - usually with miniature figures.
tically cteancd·up act. The following is a deta iled In order, the computer makes the follow ing com~
rundown of each of the program functio ns and, putations: T he attacke r's class and level are looked
whe re applicable, some suggestions on their usc. up and the appropriate com bat table consulted to
Th is program is quite flex ible and, with a little ima· obtain a "[0 hit" number against the opponent's
ginarion, can ma ke you r job as a Dungeon Maste r a armor class. A random number is gene rated and any
whole lot ea'Sier. hit modifiers added. If a hit is obtained, damage is
Incidentally, when I use the term "monster," I'm "rolled" based on the weapon used, and then any
referr ing to all non player·character creatures, damage modifiers are added on. Hit points lost are
whether human, d rooling beast, or anything in be· automa tically deducted. The compute r then checks
twecn. Players and playe r ·cha racters are, of course, to see if the attacker is entitled to more than one
the people for whom you're runn ing the dungeon, attack this round. either because of weapon type or
and the characters they're playing. level, and if so, repeats the procedure. O therwise
I do have one word of caution. If, when you're play passes [0 the next combatant.
typing in this program, you're rewarded with an The combat alternates back and forth between the
ERROR 4 (too many va riables), don't panic. Fi rst, players and monsters, that is, all players make their
find your typing error, change it, and then follow the attacks, then all monsters make thei rs, etc. Killed or
procedu re outlined in pages 2 and 3 of your BASIC unconscious combatants are automatically removed
Reference Manual for wiping ou t excess variable from the cycle, and combat can be broken 0(( at any
names. The reason fo r the problem in the first place time, eithe r ind ividually or en masse.
is the fact that I've used all 128 variable names avail~ Each player cha racter may have up {O five
able, and if you inadvertently add one of your own, weapons, but weapon number 5 is reserved fo r m i s~
you' ll get that error. sile weapons. As such, it's the only weapon modified
by the RI A Bonus, and conve rsely not modified by
M ~ MELEE (comba t )
normal hit and damage modifiers. Weapon number
Where the cassette version of D& 0 Hou s ekeep~
5 may also be assigned multiple hits pe r round. For
iog handled the combat for the player cha racters
instance, D&D rules allow a player witha short bow
only and left the monster combat to be done ma n ~
to fire two arrows per combat round. It's conceiv~
ually, the disk ve rsion does it all. able for a player with multiple rounds of comba t to
The MELEE fu nction works vcry closely with the
fire up to six arrows in a turn!
ENTE R ROOM and LOAD ROOM functions.
Those two functions make the monste r data avail~ By entering '33' as an opponent numbe r and
able for combat purposes as needed. The player pressing RETURN, spell damage may be inflicted on
character data is always contained in memory, but the monster of your choice. If the spell affects more
the monster data is loaded as encounte red, either than one monster, you can repeat the procedure as
from disk or on the ny. The computer asks only many times as desi red by pressing'S'. To pass play to
which opponent is to be fought. The players, of the next player, just press any other key. You may
course, make that choice (or themselves. and you as add hit points to the monster of your choice by en~
tering the amount of hit points you wish to add in the S - DUNG EON STATUS
form of a minus number. For instance, suppose the T he status display lists the dungeon time, the date,
parry were fighting a particularly nasty tro ll which weather conditions (outside, of course), tempera ~
regenerated ten hit points a turn. After eve ry turn, tu re, and wind. The weather conditions arc random
simply enter the MELEE mode, use the spell func~ and not subject to control by the DM, although they
tion for the first available character, and enter m inus can certainly be ignored if they don't fit into the
ten (-10) as the amount of damage inflicted by the scheme of things.
spell. Ten hit points will be added to the monster The time and date, on the other hand, can be
whose number you designated. After returning to changed. Pressing' I' will increment the time by te n
the main menu (by entering '32' and pressing RE ~ minutes, '2' by an hour, and '3' by a day. In addition,
TURN) you may resume play normally. one minute is added to the time for every combat
round played.
Entering '34' as an opponent numbe r will take you Press ' R' to return to the ma in menu.
direcdy into the monste r combat. This is useful for
those times when the bad guys have the initiative. E - ENTER ROO M
Note that, once into monster combat , you may pass To explain the ENTER ROOM function, I also
play onto the next monster by pressing ' P' or return have to explai n the LOAD ROOM fun ction at the
to the main menu by pressing 'R'. The only other 5.1me time. Pressing 'E' will cause the question,
commands recognized in that mode are the n u mbers "What is the room number!" [Q be displayed on the
o to 9, corresponding to the player characters' num~ screen. It is asking you which of the files c reated by
bers. LOAD ROOM you want to be dumped into mem-
Damage inflicted by non~combat means may be ory. At thi s point, I'll explain the LOAD ROOM
entered directly through the character sheet mode, function and come back to ENTER ROOM.
which is why I d idn't include a spell funct ion in the
L - LOAD ROOM is a routine which allows you to
monSter side of the combat. load monster data into files to be called up later by
A word to the purists o ut the re. 0&0 combat can tht;; ENTER ROOM function. Thisdata is used in the
get as complex as you could possibly want, with in- MELEE funct ion, and is actually all of the monSter
numerable modifie rs, zone hits, partial armor des~ statistics for combat resolution. The data includes
truction, aJ nauseum. This program definitely docs the number of monste rs, hit dice, individual hit
not take all that there is in D&D co mbat rules into points, number of attacks, and the damage per at~
account. It'd take a program all by itself to do that. tack.
The basic combat system is retained without mod i fi ~
cation, with the different combat tables for the dif- Pressing L will fetch up the sa me question: "What
ferent classes, hit and damage modifie rs, multiple is the room number!" You may enter a n y 3~character
attacks, missile attacks, and so on. Those of you code you wish. (Th is is actually the filename exten~
who're stic klers for detail and thrive on complexity de r for a file called D:COMBAT.) The code can be
would perhaps be better served by doing your any combination of three numbers and / or lette rs,
combat manually and using the rest of the program but if you we re smart, you'd code them to cor r es~
for housekeeping. pond to the room numbers on your dungeon map, or
the numbered encounter areas in your outdoor dun ~
# - C HARA CTER SH EET geon. You can use th is function to store the statistics
From the main menu, pressing a number between for taverns fu ll of troublemakers, and you can also
use it to load statistics on the spot for unexpected or
oand 9 inclusive wil l display a character sheet on the random encounters.
sc reen. The sheet contains the essential information
on each character which is needed as a reference As an example of how these two functions work, I
throughout the game. give you the fo llowing. Every good Dungeon Maste r
Hit points, money, and weapon status can be has a map of his du ngeon and some sort o f key to tell
changed directly in this mode, and all other informa- him what's in each o f the rooms. The rooms are nor-
tion can be changed through the initialization mode. mall y numbered , and the key describes what's in
Additional information ca n be kept in an individual each of the numbered rooms, including traps, mon ~ v
file accessed through the ROOMS function. Th is sters, treasure, etc. As the dungeon party explores
additional file would contain listings of weapons, the different rooms, they battle the monsters lurk ing
armor, equipment, special items, magical spel ls. etc., within, with the Dungeon Master taking the monste r
as well as any pertinent information on the character statistics from his key and conducting the combat
itself. like special talents, skills, and so on. manually. With this program, you'd si mply type in
You may directly enter MELEE, ROOMS, or re~ the room number to load the statistics iO[o memory
turn to the main menu by pressi ng M, Z, or R, res- and then use the MELEE function to conduc t com~
pectively. bat.
VO l. 1 THE A. N.A. L.O .G. CO MPENDIUM PAG E 151
By loadi ng the mo nster da ta into files ahead o f disk d rive and then retu rn to the comma nd menu.
time, the d ungeon runs smoothly a nd with a mini ~ To get da ta, fo llow the same p rocedu re as fil ing
You're not limited to a single screen of text, either. Com mand table.
You can write up to 300 lines of text, o r roughly thir~
MOOE COMMAND RESULT
teen screens on a single file. When the file is called 01029 Indicales the number 01 the player
back, only one screen at a time will be displayed; characler's opponen t In combal
pressing any key will display subsequent li nes. MELEE
Pass play 10 ne~t player
To use the WRITE function, type in a code num~
ber. A data file will be created. The screen will clea r,
"32 Return 10 main menu
33 AClivate the Spell FunClion ('S' to
except for a question mark, which is actually an repeat)
Go dlroctly to monSler combat
input prompt. Simply enter one line at a time , press~ 3'
Monster 'N ' Relurn 10 main menu
ing RETU R N at the end of the line. If you want CO
leave blank lines, j ust press RETURN. Whe n you've
Combal?
'" Go to monster combat
Lines 4000·6045 - Store character data FILE Any legal "Iename Files player character statlslicsand
(Initialization Mode) DATA Dungeon Stalus data under given
fIlename (see teKI for details)
Lines 6200·6900 - Monste r Comba t
Lines 6905~69 1 5 - ENTER ROOM rouP GH Any legal hlename Retfleves player character statis-
DATA tICS and the Dungeon Stalus Dala
tine filed under the given tHename (see
Lines 7000·71 75 - Weathe r, time, date, text lor details)
Li n es 9505·10065 - Character Sheet dis· WRITE xxx Allows you to type up to th,rteen
play and input screens lull of ted and save it 10
dIsk under a Ihroo-character alpha·
Lines 15000-15040 - LOAD ROOM roup rlUmar>c code I Irlenama·
tine " 0 WITCHES XXX)
Lin es 20000· 20005 - Input Error Han - ROOMS XXX Allows you 10 re1rieve the text hied
dier under the gIven code by theWRITE
lunction
Lines 3 0000·30055 - Disk directory
lister
........,. VOl. 1 TH E A.N. A.l. O.G . COMPEND IUM PAGE 153
4 CRAPHICS l : POSITIO. 4,12:POK£ 78',8: '5 If .UH)= A& T EM IF MUH(A18 THEN '88
POICE 718,8 :? 116;"PlEASE NAIT":TRAP 288 o
••
18 DI" CT(28.18),ASC18),8Se19),CS(19)
'8 COTO 8'
188 CMO$:STR$(P):CND$(l,l):CHR$(ASC(CM
OSU L l))+128)
DS(18"ESeI8),FSe19),CSeI8',HS(10),JS(
18),ICSe18),YSeJ),ACe18).le18),HPe18) 185 KElURN
15 DI" CpeI8',Spe18',CPCI8"PP(18',EP( 118 IF J=34 THEN 6288
18),H"CI8) . OMe18J,AArl0), STel0) , WOe18, 112 RETURN
5), C UO) , Hl, ,AZS (5), S8 (8) 158 ? "~" : FOA P:A8 TO MUM:! : POkE 718,
16 DIM ACArl0),W( 1 8',AlS(2' , MO.e48, SI:POICE 18' , 6&:POkE 712,58:GOSUB 180
2.01" CHOS(125 ), I .C18),WICI8',DK(18" 151 If HPCP'{ : A8 THEM IF HPCP')-Al& TH
CN(18),CHCI0),N$(2"T$(5"A$(5'~AAS(2' E. ? "t:lM'Uli_"; CMOS;" IS UNCONSCIOU S" :
,BU (2" ccS (2' ,00$ (2) ,E ES (2', fF~ (2) ? : COlO" :ho
2201" CC$(2),HHSC2),JJ$C 2 J,KIC$(2J,MUH 152 IF HP CP) (-A' THEM ? "1!Jt'O:1"H:W"; CI1D$
$(5) , AHS(2),ClS(15J,RA$CI0' , &ES(7),CEe ;" HAS 8EE. kILLED." :? :GOTo'-119
18"HEC18,2' t WE(18"ATTr19)LATTl(18J 153 ? , ," 31 - PAS S .. ·., " J2:
23 AM$: .. A... ·: (1':8 : T(2,:8:A£$ : "0:" RETURN" :? " -3 3 : SPELL:':? "
24 01" 'A$(12),&B$eI2),CC$(1 2 ) , &0$eI2' 34 : HO.S TER" ',
.CL$C12',CF$(12' , CH$C12),CI$(12"CJ$CJ 154 IF W(P' : 5 S8ep)
2),GICSC12',H1(28.16) 155 TRAP 28888 .. , S OP
25 fOA E:l TO 18:FOR K:28 TO 1 STEP - 1 PO.ENT·' ; : I.PUT : IF J:
.,
: REAO .:CTCK ,E ' : N:MEKT K: .[Kl E:ACJ:AC
26 FOR E:l TO 16:fOR K:20 TO 1 STEP - 1
JJ THEN 310
156 GO Sua J18:If J:37 THEN '888
157 If J :J3 THEN ? "HOW MANY HP DAMAGE
:AEAO N: HTCK ,E ' : N:NEKT K: NEMT E II. :INPUl K:? "AGAIMST WHICH MON STER";:
38 DATA 18,11,12,13,14,15,16,17,18.1'. I'PUT E:HOMCE+4':MONCE+4'-K:GOTO 15'
28,28,28.28,28,28,21.22,23.24,18,11,12 158 'OTO 161
,13,14,15,16,17,18,1',28,28.20,20,28 15' ? :., "TO REPEAT w:m. PRE SS'S ' '':
J:E : OPEN IIl,4 , 8 ,"IC :" : GET Ul , K: ClOSE 111
35 DATA 28,21,22,23,24,8,',18,11,12,13
, 14,15,16,17,18,1' , 28 ,2 8 ,28,2 0,28,20 ,2 :IF K: 8 l THEN ? :J:33: GOTO 157
1,22,8 , ',18, 1 1,1 2,13 ,14, 15,16,17, 18 168 'OTO J18
48 DATA 1',20,20,78,28,28,28,21,22 , 6,7 161 AC : MONCJ':If AC(:AI8 THEN IF AC )=-
,a,' , 18!11,1 2,13, 14,15,16 , 17,18 , 1',28 , A' THEN O: AS
28,28 28, 7 8,78 , 6, 7, 8",18,11 ,12, 13,14 162 If J{O OR J ) MOM(J) - 1 THEN? "8 - "
4S OA t A 15 , 16 , 17,18,1',28 ,2 8,28 ,2 8,28, ;MONCU-l·". TRY AGAIN . ": ? :C010 154
28,4,5,6,7,8,',18,11,12,IJ,14,15,16,17 164 IF 0 ($ A5 THEM ? ''!JTAY AGAIN .":? : F
,18,1',28,28 ,2 8,28,4,5,6,7 , 8,',18,11 OR I =Al TO 588:NEXT I:? "III":GOTO 154
58 DATA 12,13,1 4 ,15 .16, 17,1 8,1',28,28, 165 If W(P' : A8 lHE. ? "PLAYER ";P;" 00
28,2',2,3,4,5,6,7,8,',10,11,12,13,14,1 E5.' T HAUE A WEAPON READY" :"! "WEAPON";
SL I6 ,17,18,18,20,28,2,3,4,S,6.7,8,' :I.PUT W:IF W{AO OR W) A5 THE. 165
5~ DATA 18 , 11.12,13,14,15 , 16,J7,18 , 1' , 166 If WCP' : 8 THEN wep, =W:'OTO 118
28,28,8,I,2,J,4,5,6,7,8,',18,Jl,12,13, 28& IF CCP):AJ OR CCP):A2 OR C(P' : A3 T
14,J5,16,17,18,1',8,I,2,J,4,5,6,7,8 HEM AC1 : AC+18:H:C T(AC1 , lCP)':'OTO J88
68 DATA ',18.11,12,11.14,15,16,J7,18,1 285 IF CCP':A7 OR CCP):A8 THEN 21'
',-2,-I,8,I,2,3,4,S,6.7,8,',18,11,12,1 286 If CCP':A' OR CCP':A18 THEM 22'
3 L I4 , 15,16 L J 7,-2 , - I , O, t ,2,J, 4 ,5,6, 7 218 IF lCPJ=A3 OR lCP):A4 OR LCPJ=A5 T
6~ DATA 8,~ , t&.11 , 12,13 , 14.15,16,17,-4 HE. 0:- 1
, - 3 ,-2,-I, 8,J,2 ,3, 4 ,5,6,7, 8,',10 , J1 , 12 211 IF l(P' : A6 OA lCP' =A7 OR lCP' =A8 T
L I3 , 14 , 15, - 4 .-3,-2 , - I , O, I ,2 , J, 4,5,6 , 7 HE. 0: - A2
D6 DATA 8,',J8,11 , 12 , 1 3 ,J4 . 1 5 ,-6 ,-5,- 4 212 IF l(P':A' OR l(P):AI8 OR l(PJ : l1
,- 3 ,-2,- 1,8,1 ,2,3 ,4,5,6 , 7 ,8,',1 8,11,12 THEN D: - A3
,13, - 6, -5,- 4 .-3,-2, - 1,0,1,2,3 , 4,5,6 21J IF l(P):17 OR lCP':13 OR lCP):14 T
67 DATA 7 , 8.' 19 11,12,13 18 11 12 , 13 HE. 0 : - A4
1' , 15 , 16,17 , 18,1 ' ,'9,'0,'8, ' 8 , '8 , '0,.1 214 If L(PJ:15 OR lCP' :16 OR l(P):17 T
22,23 ,2 4,',10,11,12 , 13,14 , 15 , 16,17 HEN O:-AS
• 8 OA1A 18 , 1' ,2 9, 78,29 ,2 8,28,28 , 21,27 , 215 IF lCP' : 18 lHEM 0 : - A6
23,8,',I&,Jl,12,IJ,14.1S,16,17,18,1',2 216 AC1 : AC+18 : 01:l(PJ+D:H:CTCAC1 , Ol):G
0,20 , 28 ,2 8 ,20,1. &, 21 ,22,7,8,',1 0 , 11 , 12 OTO 300
6' DATG 13,1' ,15, 16,1 7,18,1 ' ,2 8 ,28 ,2 8 , 21' If l(P'{Al lHEM D: AO
28,28,2&,21,6,7,8,',10,Jl,12,13,14,1S, 228 IF lCP':A3 OR l (P' =A4 OR lCP) : A5 0
16 ,17. 18,1 ',28 ,78,28, 2 0 ,20,2& A lCP' : A6 THEM D: - A2
78 DATA 5,6,7 , 8,',18,11,12 , IJ , 14 . 15,16 221 IF l(P):A7 OR l CP) : A8 OR lCP' : A' 0
, 17,18 ,1',78, 28 ,2 8 ,28,28,3, 4,S,6,7,8,' R lCP' : A18 lHE. 0: - A4
,1· 11,12,IJ,14,15,16,17,18,1,,20,28
/1 6ATA 28,3,4,5,6 , 7.8.' , 18 , 11,12,IJ,1
222 IF L(P':11 OR lCP':12 OR lrp' :13 0
A lCP):14 TH EN D: - A6
4 , 15.16,17 ,1 8 ,1' ,28,2& ,2 8 .3, 4 . 5,6,7 , 8 , 223 If LCP' : 15 OR lCP' : 16 OR lCPJ :17 0
',18,11 ,12,13 .14,15 ,16 ,17 , 1 8, 1',28 , 28 R LCP' :18 THEM 0: - A8
72 DATA 20,2,3,4,5,6,7,8 , ',18,1J,12,IJ 22401:lCP)+D:ACl:AC+A18:H:CTCAC1,Dl':
,14,15,J6,17,18,1',28,28,8,I,2,3 L 4,S,6 FOA E: Al TO A8:1f 01 :E THEN H: H+Al
,7,8" ,18 ,11,12, 1 3, 14 ,15, 16 , 1 7, 1~ ,1 ' 225 NEKT E:COTO 108
7J DATA 1,1. 2,3, 4 ,S,6,7 , 8,' , 10,11,12. J 22' If lep) ( AJ THEM D: A8
3 ,14 ,15, 16 ,17 ,18 ,1' ,- J,8 . 1 ,2,3, 4 , 5 , 6 , 7 238 If lCP' : A3 THEN D:-Al
L 8 " t 10 ,11,12,1J,J4,15,16 L 17,18 2Jl If l(P':A4 OR lCP':A5 OR lCP':A6 0
14 OaTA -1,O , I,2. J, 4,5,6. I,8 ,',18,11.1 A lCP':A7 THEN 0 =- A3
2,13,1',15,J6,17,18,-2,-I,8,1,2,3,4,5. 212 If l CP) =A8 OR lCP' : A' THEN D: - A4
6,7,8.',10 , 11,1 2,J3,14, 1 5,16,17 211 IF lCP' : AI8 OR L (P' : 11 OR L(P':12
75 DATA -3,-2,-1, 9 , 1 ,2 , 3, 4 ,5 ,6,7,8 , ' , 1 THEN D: - A6
°tI111 2 ,1 3,1 4,1 5, J6 234 I F l(P) :IJ OR lCP' : 14 THE. 0 : - A8
8w A =1 :A 8 =A1 - Al:A 2:Al+Gl:A J= AZ+Gl : A4 : 21S IF LCP' : 15 OR lCP':16 OR lCP':17 T
A3+ Al : AS =A3+A2 : A6:A 5 +Al:A7 : A5+A2:A8 =A4 HE. O=-A'
+A4:A'=A5+A4:AI0:A5+A5:Al1:A6+A5 236 IF l(P':18 THEM 0 : - A18
85 G12 =A2*A6 :A1J =G6+A7:A14 : A7*A7 :AJS: G 237 D1 :L(P '+O ; ACl =AC+ A18 : H=C TCACJ,OI) :
3*A5:AI6=G7*A8:GI7:A'+A8:AI8=A3*A6:Al' fOR E:Al TO A18 : IF D1:E THEN H: H+Al
: AJO+A' : A2B : AI0*A 2: GRAPHJC S e 2J8 MEMT E:fOR E=16 TO 18:IF 01 :E THE.
86 POKE 82, 2 H: H+A1
8' TRAP 8':POKE 712 , 128:POKE 71 8,128:P 23' NEXT E
DICE 7S2, At: ') II~":PO S ITIO" J.J. , l2.:? "~HO
W MANY PLAY ERS"; : UPUl NUM:.UM=NUM-A1
PAGE 154 THE A.N.A.L.O.G. COMPEN DI UM VOL. 1
·' t...
283 5 1 "f...
2 048 ? ·'f . ..
" f •••
"; GHS : RETURN
";C IS : RETURN
"; CJS :RETURM
" j CKS : RETURN
" I!j" : PO S ITION 8 , 11 : 1 ''(3 {J]g
NTH"
.4100
48 1 5 ? , , " H YEAR":1 "'Y RETURN 10 MENU
PO SITION 1 , 1 7:? "HEAOIN G? " : OP£N U
1 , 4 t .... K: .. :6ET U3.J :CLOS E 1I1:IF J ( 65 0
R J 1 8' THEN 4190
POSITION 8 , 12: ? " AR E YOU SUR
"K : ":C[T Pl,J : CLOSE PI 41 05 PO SITION 22 ,18
TRAP 30 04 : GOTO 3 804 4186 ON J - 64 Goro 4118 411 5 41 2 9 4125
' 008 41 1 0 . 41 15 ,4148,414 5 ,41S0 , 41~5 , 41~8,41A
5,4170,41 75,4188,418 5 ,41'0,41'5 , 4 280
~~~i:t:iif:':i155)
4107 ON J - 83 G010 4 285,4 2 1 8, 4 215 ,4 2 8 5,
: ? "I!j ":
THE NAME Of PO
THSITION A8 , 11
E": PO S ITION 42 ' 0,4 2 ' 5
fIlE "; : INPUT CMO S 4188 GO TO 4880
: AZS= "O:" : AZS (1 , 3 -+LEN ( CM 41101 "fPLAYER NUHBER"' : IHPUT P
411 2 IF P { A8 OR P) A' lHtN ~ "t8 TO "
Ul , 8 , 8,AZS: f OR J =Al TO 1 26: P PLEA SE - TRY AGO III" : fOR E=Al 10 A58: NE
Ul , Q: NEKl J XT E :? "t": 1 :GOTO 4110
3810 fOR E=AO TO NUM : PRINI Ul,AC(E, ; TS 4113 IF P) NUM THEN NUM=P
;C 4114 GO TO 4880
(E'CE) •' TS •' HPCE) . ' T$,' HHCE) "'TS 'O N(E' "'TS ' RA
4115 ? " tPLAYER MAttE";: ON P -+tI1 GO SU8 6
191 2 PAINT Ul i ACA(E' ; TS ;S 8CE' ; TS;LC E) ; 888,680S,6818 , 6815 L 6820,602S ,6 010 ,6 0 J5
TS;S TCE) ; TS; INCE) ; TS ' WICE) ; TS'OK(El , 6848 , 6945:liOTO 40uO
181 5 PAINT Ul ; WCE)iTS ; GPCE'iTS; SP(E' ; T 4128 1 "fClA SS " ; :liO SUB 5508:GOI0 4808
S; C P(E) ; TS; P P ( EJ;T ~; EP( E ';T ~ ; C N(E) 4125 1 " fALIGNMEHT ";: IN P UT Al S:CO SUB 5
3816 PRINT Ul' CH(E';T S; ATT( £ l ; T$ ;WE( El 880:GOTO 4000
;TS ; HE( E ,OJ ; d;H £ (E ~ ll ; TS ; G E C £ ) : N E KT E 41 3 0 ? "f STR ENCiTH"': I NPUT E: ST(P, =E :GO
TO 4888 '
3 81 7 PRINT UliAAS;T~iBBS ; lS ;CC S ; T$ ; DO$
'I S'E E S ' TS ' FF~ ' T S' GG ~ 4 1 35 ? "tINIELLIGEN CE" ; :INPUT E:IHCP )=
3818 PRiNT'UliHHS ; TSi J J$ i T$ ; KK Si TSiA$ ; £:GOTO 4880
T$;8S;TS ; CS;T ~ ' OS'TS ; ES ; T S; fS i T ~; G$ 4140 '? " tWISDO",' ;: INPUT E: WI (Pl =E : GOTO
30 2 0 PRIMT ~ ' HS , t$ ' J S 'T $' KS ' T S'Z' T $' " 4088
; TS ; T (I' " , . ,"" 414 5 ~ "fO£~T E RITY" ; :I"PUT E:DI«Pl =E: G
3821 PRUT #1 ; TC2' :PRINT Ul;AK$ ; T$ ; V OTO 4888
302 2 FOR J =Al TO A5 : FOR E=A9 TO NUH:PR 4158 1 " tCON 5 TITUlIOM" ; :UPUI E: CN( P' =
INT al ; NDCE , JJ : NEXT E : NEKT J E :G OTO 4908
1825 PRINT Ul ' GA $i lS 'G 8S i TS' GC$; TS 'G OS 4155 ? "f CHARISt'tA" j :INPUT E:C H(P) =E :G O
j~~iGLS ; TS;GF$ ; TS; G H S; TS;C I! ;T S jGJ!; l S TO 4880
41 6 0 ? "fRACE";: GOS U8 1089: GOTO 4888
3 8 1 0 CLO S E "I:ENO 416 5 ? "fGENDER" ;: INPUT GE S : If 6E$="""
3 500 ? "I!j" : PO S ITION 8, 11 :? ''C ~ OR GE S=" I1AlE" THEN GECP) = l:GOTO 4808
[!l!II!il" : POSITION 8 .12: ? It ARE YOU SUR 416 7 If GES ="F" OR GES ="F EMA l f" THEN G
E'1": OP EN Ul . 4 , 8," IC: " :G ET Ul ,J : CLO SE Ul £ CP' =2 :G OTO 4089
4 170? "fHEIGHT (fEEn " ; : INPUl J: HE( P.
VOl. 1 TH E A.N.A .l.O.G . COMPE NDI UM PAGE 155
8J:J:POSITIOIiI 2'.1':? "'CINCHESl"; :UP 6227 IF SWING):H THEil ? "A HIT! ! " : OA~
UT J:HECP ll : J:GOTO 4800 nIT (MON U6J *RJIIO (Al] -tAl) :? "DAMAGE : ";
4175 ? "'WEIGHT" ;: INPUT J:MECP] : J:GOTO OAM j " HP": ? : ?
4000 6230 If ~WIN(; (H THEN ? "A "ISS!": ? :?
4188 ? "'lE1JEl"j : INPUT E:lCP] : E:GOTO 4 :'OTO 68'5
000 6235 HP(P] : HPCP) - DAH :D AM=O
4185 '? "'ARMOR ClASS"j:INPUT E:AC(P) :E 6a'5 IIEMf x
: GOTO 4088 6'00 N[XT [: ? :? "PAE ~S ANV KEV TO CON
41'8 '? "'HIT f'KlDlfIER"j:INPU1 E:H"CP] : TIICU[":OPEN Ul . ~ , 8."IC:" : (iET Ul.E:ClOSE
E:GOTO .. 088 Ul :I F E):O THE" '088
4H5 7 ·'tDAt'kIGE MODIfIER"j :INPU1 E:D"( 6'85 TRAP 38808:? """:P05ITION 2.12:?
PJ:E:GOTO 4980 "NKAT 15 THE ROOM IIUMB EA";: INPUT CNDS
4290 ? "'AC ADJUSTMEn";: IMPUT E: ACA(P 6'10 CLO SE IU :AZS:"D: COMBAT.": AZS UB, 1
' : E:GOTO "080 8-tlEN(CMD$]] :C ~S:HIO 3 Ul,4.8 AZS
428 5 '? "tR I A BONUS"; :INPUT E:RA(PJ:E:G 6'15 fOR E: l TO 48:IIPUt Ul.J:MON(E) : J
OTO .. 000 :IEKl E:CLOSE Ul:'OTO ,a88
"210 '? "ttllTTtII CK5/ TUAN" ;: INPUT E:AT1CP] 7888 f =IMT(lBB*RMOCAl]]-tAl:E: IMTC38*RII
=E:(;010 .. 088 o (Al)] +U
4215 '? "fWEAPOM DAMAGE": '? ". ·t+WEAPON U 7112 ON M 'OTO 7883,7903.788'.788'.788
l"':IMPUT E:WOCP Al] : E: ? "++WEAPDM *'2" 4.7085.7885.7885,7805 ,788'.788".7'83
; :fHPUT E:WOCP,A2):E 7883 K: INT(2S*RNOCA1)]:GOTO 7888
4278 ? "++WEAPON 11-3"j :INPUT E:I«)(P.Al) 780. X: INTC25*RJIIO(Al]+ Z5 ) :GOTO 7888
: f :"" WEAPON U4" ;: INPUT E:WOCP,A"':E 7805 H: IN1C33*RNO(Al)+60) :GOTO 7808
4280 ? .. WEAPON US"; :HIPUT E:WIHP,A5) 7888 OL =PEEK(568)-t256*PEEK(561) :8: PEEK
: E :? "NUMBER Of HITS PER ROUMD" j : IMPUT COL-tA4):C : PEEK(DL+A5):POKE S5',A8:POKf
E:5B(P':E:GOTO 4888 Ol+A4 . B:POKf Dl.A 5,C:P OKE Ol-tA3,66
4 285 ? ",KON1 H" ; :INPUT M:G010 4808 788' POKE Ol-tA6 , A6 : POK E Ol.A7,A6 : POKE
' 2'0 ? "'V EAA" ;: INPUT V:C OTO "880 Ol-t1 3, A6:POKE Ol-t14,A6:POKE Dl-t15,A6:P
. n5 GOTO '888 OkE Dl.16 , A6: POKE DL.2 ' .65
5 808 If P=AO THEN AAS:ALS 7810 POKE OL-t38 . PEEK( 568 ):POKE Dl-t 3 1 .P
5082 If P=Al THEN BBS : ALS EEK(561) :POKE 55' .3 " :P OKE 7~e.128:POkE
588 .. If P: A2 THEN CCS:ALS 712,128:? "". OUNGEO" S TATUS" :?
5886 If P =A3 THEN DOS:ALS 7811 IF 0: A3 THEN 0 : A8:GOTO 7815
5 8 08 IF P: A.. THEN EES=AL$ 7812 IF H(3 0 THEN IF f(:60 1HEN If A):
5810 If P: A5 THEN FFS=ALS 188 TH EI ? "tWEATHER : SNOW " : 0: 0
581 2 IF P: A6 THEN GGS:ALS i-1: (iOTO 7025
SOl' If P:A7 THEN HHS : ALS 791 l IF X):30 THEM If X(:3 .. THEN If f (
5816 If P: A8 THEN JJS=ALS : 68 THEN IF A): J88 THEil ? "'WEATHER:
5818 If P:A' THEI KkS:ALS SLEET ": 0';:0-t1 : COTO 7 825
58 2 0 RETUAN 7814 I f F( : 68 THEN I f A):1 88 THEN '? '"
5508 INPUT CLS : If CLS:"fIGHTER" OR CLS WEATHER : RAIl ": 0 : 0+ 1: GOTO 7825
: "f" THEI C(PJ:Al 7815 If F)30 THEil? "WEATHER : fAIR":
558 5 If CLS:"RAIiIGEA" OR CLS : "A" THEN C 0 =8 : A:8: G010 7825
CP' : A2 7820 If f (:3 0 THEN'? "WEATHEA: CLOUDV"
5510 If ClS:" PALAOIIiI" OR CLS : "P" THEN :lET A: A+188
CCPJ:A3 7825 ? "WIIID: "; E; " MPH"
- 5515 If ClS : "CLERIC" OA CLS:"C" THEIiI C
(P) : A ..
78.6 ? "TEMPERATURE: ";K
7158 '? .... DUNGEOII TIME"
- ~ ;!,~:;~~:~~~:1~:::i~~~~:~::~~;:f.0A
7113 If J :5 1 THEN Z=Z +Al:GOTO 7 128
(P] : A' 7U .. GOTO 7188
OR CLS:"ICJ"
CLS:"I" 01 7115 T(A2) : T(A2).UAl(CHAS(J)]*AI0
7128 IF TCA2J ):68 THEN 1(A2):T(A2)-61:
T (AlJ : T (AJ)-tU
:RETURN 7125 If T(Al) : 11 THEN T(A3] : A3
INPUT :RETURN 7130 IF TlAl] : 12 THEN If TCA3) : A3 THEN
INPUT :RETURN If AMS ';:"AM" THEil AHS : "P"": T(A3) : A8 :GO
INPUT : RETURN TO 7145
I NPUT :RETUAN 7135 If T(Al] =A12 THEM If T(AI] : A3 THE
N If AMS : "PH'" THEN AMS : "AM": Z: Z+Al: T CA
3) : A8
71.5 If T(Al]:13 THEN T(Al ) =Al
7 158 If Z: 31 THEN Z: Al:"="+Al
7155 If M: 1 3 THEN M: Al:V : V+Al
7175 GOTO 7888
7588 AZS :"O:WI TCHES. " :? ""ROOM NUP1BER"
E Ul: ;:IIIPUT C"OS :AZS ( lJ,11+LENCCHOS)) =CMD$
6201 : POKE 719,290:POKE 79' ,1' 4 : POK [ 712,8
6283 7$05 TRAP 38808:CLOSE Ul:O PEN Ul,~.O.A
6218 fOR - I :? :Jf "ONCE+4 ZS :" .. " ..
) (:8 THEN
LED": ? :? :1:1
"~rit'\' ; E ;" HAS BEEI KIL
6212 FOA H: l TO NON US) : 7 ' 1: [11:..,13:1 " ;f
;"'5 OPPON ENT" : OPEN UJ. .... 0 ." k: 7 ':tET U3
,J:CtOSE U3 :If J:88 THEil 6'80
6215 If J:82 THEN '000
6218 If J ( 48 OR J )57 THEN 6212
6220 If 1JAlCCHRS ( J ])IUH THEN 6212 Q4 ,J:C I.OSE U
6225 P =UAL(CHR$(J)]:5WIN' =INT(29_AMO(G
1'+Al] :H =HT (aCCP)+10.MONl2')
PAGE 156 THE A .N.A .l.O.G. COMPEND IUM VOL. ,
J
..
28184 ? lOt
28195 TRAP 28188 : 'OTO ERLII
18898 If PEEK U '5] =178 THEil ? """: POSI
TION 2,5 :? "THERE'S NO 'jUCH FILE Olt TH
IS DISK!!"
38883 ? :? "THE FILES ARE:":?
38'05 TRAP 38855:CLOSE Ul:0PEN Ul,6 , 8,
"0'* *"
3881i INPUT Ul;CHD$
38115 PRINT CND$:'OTO 38818
38855 CLOSE Ul:ERLN=PEEK(186'+256*PEEK
(187J:FOR E=1 TO 211:lfEXT E:TRAP 28e88
: 'OTO '118
•
CHECKSUM DATA
(See pgs. 7-10)
4 DATA 621,486 L 367,'83,872,218 L I74,155
828,885,162,785,155,288 1'7L6~78
55 DATA 4',185,1'7,71,'86,2",476,477,
371,471,68',638,873,1'3,388,6146
86 DATA 668,4'6,77,666,'84,586,644 ,5 86
,'24,668,622,446,67',761,51,8712
157 DATA 686,725,351,788,148,6'6,4'4,'
14,525,1",28',188 , 822,713,835,82'3
713 DATA 681,623,2'5,534,'5,14',112,13
,54,888,828,'8,383,164,47',5228
733 DATA 783,412,647,126,63,75',748,,7
7,741,77','27,'36,648,23',736,'888
318 DATA 388,863,7,184,112,634,235,155
,148,168 , 153,17',158,172 , 165,3625
1145 DATA 177,178 L '86,646 , 648,653,647,
681,654 , 6 78,66',6,7,671,571 ,7'6,'223
3882 DATA 875,717,8" , 4'8,547,553,723,
738,45',2,653,6'3,451 , '35,573,8391
3830 DATA 348,271,'85,8'8,737,687,167,
2'7,63',2'8,5'8,",8'3 , 651,885,8151
3528 DATA '71,187,71' , 361 , 468,227,38' ,
18,8'8,687,817,135,738 , 16',621,72'6
.111 DATA 283,723,785,762,542,855,515,
676,1.6.6",7J8,2'8,173,.68 , .83 ,7 '88
'17 5 DATA 666L.3,Z83L.Z'L888,5.5,'.3,4
'2,577,32' , 11H,5'5,2.3,7~1,377,6'3'
5882 DATA 337L3.7L357L367L3S8L368 , J78,
3'3, 483,78,,8~8,2Z8,5z 3,1'5,7~,,616e
5575 DATA 122,7'6,688,725,"3,8J7,'18,
'7','21,'32,'24,'35,'77,'38,'31,11'88
6845 DATA "2,682,8'8,735,4",465,8'1,
638,'18,'2,"J,7'8,173,582,42,8634
6'85 DATA 6"L5'8L34'L575L7.1,88'LI88,
186,5'7 , 518,5~7,'~7,5z',lu5,8'6 , 8~83 Pretty Demo
7815 DATA '87,13',37,213,J55 , 318,'2,8'
4 , '11,585,73',866,1',685,781,72'8
7135 DATA 687,683,622,63 7,71 8 ,86 C,578,
711,365,316,'81,76','21,75',745,'821
1. DEC;
21 GRAPHICS 24
815e DATA 758,6'8,3'8,126,327,685,886. n COLOR 1
243,5'8,C82,185,'28,5",76',838,8132 4. ~ETCOLOR 2,1,1
'880 DATA 211,"8,827,3'4,56".81,'6., 51 fOR 1=1 TO 368 STEP 5
"3,'.7,764,'58,'42,221,'6','86,11161 61 H=l1 ~1/36'
'8J8 DATA 47' , 188,832,187 £5 81,222 L 551, 71 Y=81+8I*SI.(I'
578,147,'38.486,4S3,362,5b5,475,7~55 81 If 1)21. THE. 118
'530 DATA .8 •• 118 L'18,7'8 L 78. L676,185, , . PLOT 1,1
682,687 , 6J2,617,6z7,671,6~ 2, 6~7,'431 III DRANTO X, V
'688 DATA 645,658,141,8'6,88,'13,125 ,7 111 If 1('1 THEN 13.
11,117,618,567,143,377,66','73,7578 128 DRANTO 31',15'
'785 DATA 73' 748,758,753 768 , 741,753, III IEXT I
'32,78','78,571,588,58',5'8,687,18888 148 If PEEK(764)()255 THEN END
'818 DATA 5'7£616,615£62'L6l8L217,86', 158 'OTO 141
857,'81 , 888.4~8,8 5,l~,'I~,57~.'2'J
1581. DATA 'IJ,'23,5'8,47',58,278,262,
1'6,661,376,576,687,232,728,687,75'1
38855 DATA 531,531
CHECKSUM DATA
• (See pgs. 7-10)
PAGE 158 T HE A .N.A. l.O.G. COMPENDIUM VOl. 1
THUNDER ISLAND
v
32K Cassette or Disk v
by C r aig Pa tch eu
O ne of the interesting features of the ATARI T hunder Island uses the priority register to
ho me computer is the priority register. This reserved control which section o f the maze immedi ately s ur ~
memory location wor ks together with the ATARI 's rounding you can be seen at a given time. If you
pl a ye r~ m iss il e graphics system to allow screen draw a maze in playfield o ne and set the color of play-
objects to pass behind or in front of other objects, fi eld o ne to that of the background , under normal
an effect that can give the illusion of depth. circumstances we won't be able to see the maze. But,
The prior ity register is called, appropriately, by setting PRIO R to 2, we can have p layers two and
PRIO R and is fo und at memory location 623 ($26F three appea r be[ween the background and playfi eld v
hex). The foll owi ng chart sho ws the effect of one, thereby making the sectio n of the maze "i n
POKEing vario us values into it. Note that a high front" o f either player visible. That's all there is to it.
priority object will appear to move in front of an P laying the Gam e.
object with lower priority.
Th u nder Island is located in the middle of the
Pacific, about a thousa nd miles north of New
Zeal and. An internationall y renowned playboy
PR I O R ~
resort, its main attraction is a huge transparent maze.
8 4 z This maze can be set up to anyone of an almost
infinite num ber of fl oor p lans, so that it is impossible
t
.q
PFO
PF I
PFO
PFI
PO
PI
PO
PI
to memorize the layout.
Because it is transparent, the maze is normally easy
PO PF2 PFO P2 to solve. The island, however, is subject to frequent
"
.Q thu nderstOrms, and the power generator that lights
PI PF30< P4 PFI P3
0. P2 PO PF2 PFO the maze is o ften knocked out. As a precaution to
P3 PI PF3 0< P4 PF I th is, those entering the maze carry lanterns, allowing
Pf2 P2 P2 PF2 them to at least see thac pare o f it immediately
PF3 or P4 P3 P3 PF30< P4 surro unding them. It is the challenge of navigating
BAK BA K BA K BA K the da rkened maze, however, that has drawn you to
Thunder Island. A different maze will be generated
each time you play. Good Luck l
Pn refers to player n
PFn refers to playfi eld n (as in SETCOLO R n) O ption s
PF3 o r P4 refers to the fact that all missiles can be Use the chart below to pick che type of game you v
given the colo r o f playfield 3 and used as an extra want to play. A o n e~pl aye r game is good. for
player (pla yer 4). This is done by adding 16 to the practicing, but you 'll find the twO player games to be
value being POKEd into PRIO R. mo re fu n. You can choose to playa d aylight game, in
When two players overlap, you can also choose to which the whole maze is always visible, or a night-
have a third color in the overl ap region. Thi s is done time one, in which o nly part of it is visible. Yo u can v
by adding 32 (dec imal) to the value being POKEd also choose from three maze diffi culty levels, and
into PRIO R . each player can choose fro m three lantern sizes
VO L. 1 THE A.N.A.L.O .G. COMPE N DIUM PAGE 159
TO Cl:POKE C712,CI4:POKE
(allowing better players to take a handicap). Once Y=C8 TO 58:50 UN D C8,Y.C8,
you've selected the game you want , press START
Y=25 THEN POkE C718,C8 : POKE
and the computer will begi n generating the maze.
- O nce it's finished , your lancern(s) will light up and
the ga me will start.
Using your j oystick , you must maneuver your
•• __ .... Y:NEJCl ~ : fOR Y=51 TO 255:
~,: " •. " .. " ••• , •.••,.C
••8:NEXT Y: POKE C112,58:P
C78',C8
:POKE C711,~22:G05U8 1
player to the corner of the maze diagona ll y opposite
to the o ne you starred at, and ex it the mazc. There is a
timer at the bonom of the screen that keeps track of
how long you 've been in the maze , so you can
compete fo r the fastest rime. As soon as someone
escapes, the storm will end and the maze will start
reflecting a rainbow. Press START to run the
p rogram again. 0
E M HEM
•••
E M H
~88 GOTO 378
~'8 If PEEKC5327"(>C6 THEN 388
588 IF LEUElP=C2 THEN S~8
MAZE DIFFICULTY
518 lEUElD = (SKILl(CI8>:lEUELM:~KILL-C3
*INT(C~KIll - Cl) / C3):LEUELMA=C2-INT((Sk
E=EASY M.::MEDIUM H=HARO ILL - Cl)/C3)
(LARGE, MEDIUM, SMALL=LANTERN SI ZE) 528 If NOT LEUElD THEN LEUELMA=C8
538 'OTO 618
5~8 LEUElD=(5KILL(28):LEUEl~~KILL - C3*
INT(SKIll-Cl)/C3' : T = INT((~KILL - £1) / C3
189 ClR :G010 159 I
118 ~OUND C8.CI.C8.CI : RETURN 558 If T=C8 OR 1 =C3 OR T = C~ THEN lEUEl
1 28 FOR J=Cl TO 51 : NE~T J:RETURN WA=C2
IJ8 DI=~ S C(M$(l.Z" - ~8:D2=ASC(M$(Z+Cl, 568 IF T=£1 OR T=C5 OR T=C6 T"EN lEUEl
ZtCl)) - ~8 WA=Cl
1.8 8YTE=HEXCOZ'.CI6*"E~C01':QZ=OZiCl: 578 If T=C2 OR T=C7 OR T=C8 THEN lEVEL
POKE C78',PEEK(53778) : AETURN MA=C8
158 READ C8,Cl,C2,CJ,C~,C5,C6,C7,C8,C' 588 If T=C8 OR T=C5 OR T=C7 THEN LEUEl
,CI8,Cl1,CI2 . CI3.Cl~ , CI6.CI28 . C568 . C56 W8=C2
I , C78',C718 C711,C712 5'8 If T=Cl OR T=C3 OR T=C8 THEN LEUEL
168 OJ" DLI!CC13),ASCC16),~C~~2),HEXC W8=Cl
22) : GR APHICS 18: POSITION C~ , C5: 1 1lC6:" 688 If T=C2 OR T = C~ OR T=C6 THEN lEuEL
initializing" "=£8
178 FOR I=Cl TO CIJ:REAO BYTE:DlIS(J ' = 618 GRAPHIC S 21:POK[ CI6,112 : POKE 5377
CHASCBYTE) : NEXT I ~,112
188 FOR I=Cl TO CI6:READ BYTE:RSCI'=CH 628 LEUELM=88*ClEUEl~CZ'+2S5*(lEUEL~
R$(BYTE):NEKT I : FOR I=C8 TO 22 : READ 8Y Cl):NIDT"A=LEUELNA*C~:NrDTHB=lEUELMB*C
TE:HE~CI' = 8YTE : NEXT I 4:IF MYD1HA=C8 THEN NIDTHA =CI2
1'8 Q2 = - Cl:FOR I=Cl TO Cl:READ M$:FOR 618 If WIDTH8=C8 THE. WIDTHI=CI2
Z=Cl TO LEMCMS'-Cl STEP C2 : GOSUB 138:P 6~8 POKE C712,58 : POkE C718,58:COLOR C3
orE 1571tQ2,BYTE:NEXT Z : NEXT 1 : POKE C,.'. CU
288 Q2= - Cl : fOR I=Cl TO 21:READ ~ : fOR 658 fOA ~=C8 TO 78 STEP CI:PLOT H, C8 : D
Z=Cl TO LENCMS'-Cl STEP C2:GOSUB 138:P RANTO H.45:NEXT X:fOR Y=C8 TO ~5 STEP
OKE 2'6'6tQ2,BYTE:NEXT l:NEXT I C3:PlOT Cl,Y:DAAWTO 77 . Y:.EXT Y
2 18 FOR X=2'68' TO 2,6'5:POKE X,C8:NE ~ 668 ~OUND C8,CIJ,C8,C8:FOR X=Cl TO C3:
T ~:FOR 1=153 6 TO 1578:POK[ I,C8:NEHT NEXT K:GOSU8 IIB:POKE C718 , 218 : fOR H=C
I 1 TO 500:'EKT K
228 GRAPHICS CI6:POKE CI6,112:POKf 537 678 M:$(Cl,Cl)="8" : M${~~2 , ~42)="8":"$(C
7~ , 112
231 POKE C718.C8:S1=PEfKCC568,t256*P£E ..
2'=HS:A=tNTCANDCC8>*1'8)+27:M$CA,A) ="1
688 POKE 15J6,lEUELH : POKE 15:17,J3J:POK
KCC561)+C~:POKf STtC2,C7 : POKE Sl+C~,C6
: POKE 5 T+2~, 65 [ 1518,Cl:S0UID C8,2~ , C~ , C6:X=USR(3012
2.8 POkE ~Tt25,PfEk(C568':POKE ~Ti26 , P 7 ADR (MS))
EEK (C561) 6~8 A=~2*I'T(AND(C8)*C2':COLOR C8:PLOT
258 POKE C788,C8 : POK£ C78',C8:POKE C71 C8,Cl+A : PLOT 78.~4 - A:PLOT C8,C2+A : PlO
I,CO T 78 , .3-Q : '05UB 118
..
RE" 86'883.CO,75'C8815A08386808586'8408.86
'.1 IF FlA 5 H=25 THEN 5ETCOlOA C',C' -C 6 02888E8686028 •• E85862E8686E8820888
*ClEUElO =C8),cz*elEuElo=C81 1170 04TA 008686'8A08S86.8C408E8186860
'51 IF PEEK(1568) OR PEEKeJS61) THEN' 85868085866860.68680.606688A18608'8660
85.68085860086866'8880868618A08786
'68 IF PEEK(1558) THEN SOUND C',28,C8, 1338 OATA 60858685C000888660868685CEA8
CO lA6881COC'180883EE8'8668A55885C8A55'85
'" IF PEEK(155') THEN SOUND C••••• C8. CCA08A86'0.018.865C885C80'8865CC85
CO 13.8 DATA CC68808A808E8638A08A86E08E86
'89 FOR H=Cl TO C5:NEXT M:,05UB 118:'0 QAE8A'3FCOF.86386A6A.C'677808E.6A'8880
TO 8'8 . 8C86A08B86A2"802EOC86E88J008B8080
"0 M=USR(1703) :S OUNO C2,C8.C8 , CO 1158 OOTA 8640.C06.8400086'8CAOOEA8080
1889 IF PEEK(1568) THEN POKE 532",C8: 86681860808680800668600C86800C8618A5C6
POKE 53251,CO 6080868SC805CC600C8685CCA08981C620
1818 IF PEEKCI561) THEN POKE 512'8.C8: 1368 DATA 8E86'lC660
POKE 53259.C8
1829 M= U5 R(QOACA$)):FOA )( =512.8 TO 517
51 : POKE H,C8:MEHT M:G010 218 •
181Q REM * CON5TANT5
18.8 DaTA 8 1,2 1,' 5,6 1,8,',18 11 12
v
,11,1.,16,128 568,561 L 78',,18,71i.7i2 C H EC KSUM DATA
1858 REM * Ol t ROUTrNt
.868 DATA 72,16',1'.1'1,18,212.1'1.71,
(See pgs. 7-10)
288,16',88.18',6' v
1810 REM * RAINBOW ROUTINE
1880 DATA 18' , 16',6 ,2 32,1'2,18,217.1'2
,2 •• 288 L 285,ll,788.288,Z.2,'6
18'8 REft • HEM OATO
1188 DATA . , I L 7 1 •• , s.6.1,8.' • ••• ,8,.,
8,8 , ' . I ' . 11,lz. 11,1'.15
1118 RE" • TIMEA ROUTINE
1128 DATA 68180'A,655885COA'81655'85CE
0'lC8022.2A'8680238268A51.C'86B883'C5F
E.4'81851'EE1F86AOIF86C'8A08170,88
1138 DaTa 801f8fiEE208fiaD288fic,eaD823a,
88802886EE2186A02186C'86081.0'.88021.6
EE2286A0 7 786C'840.85A'8860228648 ••
11.0 04TO A784C881f08.C8 •• 0.88A,IA'ICO
C810'OF8BOIE06"18'ICOCOC608E54C5fE.68
0060E.8022.20061E.80218268
1158 REM * P/M-STICK ROUTINE
1168 DATA 68AZ.8801£.64EIE860,88,01686
'01886801.86801086BOI786801886801882.A
'.83EE1886'A.B'801CEI88628581.AOtE
1118 OATo 86Aa801.86801A86801286801086
68.A'883EEIA8640'883CEI086285874[[IE86
ODIE86C'82D8AC68ASS88SCBASS'65CCAO
VO L. 1 T HE A.N.A. l. O.G. COMPEN DI UM PAG E 161
v MANIAC!
Over the past several years, many game programs Move ment.
have been developed for the ATARI computers. The computer moves the robots in a one~person
Unfor tunately, most of these games cost from $30 to ga me. In a two-person game, one player controls the
$40 apiece. Tak ing pity on those who. like m yself, hunter, and the other player contro ls the robots.
cannot afford to buy all those great games, I pro~ Moving either the hunte r or tht= robots is very
grammed an arcade~sty l e game called Maniac! This simple. Hold the joystick in the normal position and
v fast~ac t ion Assembly language game is you rs for the push it in the direction you wish to move.
p rice of a few hours of typing. You're goi ng to like If a robot and the hunter collide, either one or
this one! both is blown up. If either a robot o r a hunte r wal ks
into a wall , it will explode.
The game.
M a niac ! is set in a maze with eight levels. Each Earth a nd bulrush es.
level is filled with crazed robots. These robots were Robots on the higher~numbered maze levels be~
once peaceful ga rdeners but became s h ort~circuited come increasingly covered with a layer of earth and
by pesticides, and are now trying to destroy anything bulrushes. This makes it rather hard for the hunter'S
that moves with their miss i le~firing shovels. You are .45 to hit one. To kill a robot, the hunter must shoot
dropped into the first level of thi's maze, equipped it once for each level of the maze. Thus. on level six,
only with you r trusty .45 and ammunition. Your job the hunter must shoot each robot six times before it
v
is to stop all the robots on each level. is destroyed.
At first, your task is not particularly difficult, but 2 ~pl aye r ve rsio n .
as you enter the higher~numbered maze levels the job In the two~player game, one person controls the
gets harder and harder. That's because the robots on hunter, and the other person controls the robots.
the higher~numbered maze levels have been around The hunter is controlled by the joystick in port zero,
longer and are covered with a protective layer of and the robots are moved by the joystick in port one.
earth and bultrushes. To start, the person with the robots moves only
To sta r t. the leftmost robot. If it is killed, control switches to
At the beginning of this game there is a short in~ the center robot. When that one is killed, control
troduction (jUSt to help you learn my name), and moves to the rightmost robot.
then the machine asks you if you are goi ng to have As the player controlling the robots becomes
a one or two~playe r game. Enter you r choice. A light more skilled he may want to switch control from
grey maze-appears on your mon itor screen, along robot to robot at wilL This can be done by using one
with a green figure representing yOll and th ree red of three keyboard keys. To make the joystick control
figures representing the robots. At the end of the the leftmost robot, press the sem i ~colon key; to
maze opposite from where you start is a door. Your make the joystick control the center robot, press the
objective is to destroy all three robots and to run o ut plus sign key; to make the joystick control the right~
the exit door. If you do this, the compute r automati~ most robot, press the multiplication sign key.
cally advances you to the next level of the maze. If, Firing.
however, you exit without destroy ing all the robots, Both the h u nter and the robot can fire in many
you remain at you r current level and must try again. different directions. To rotate the ar m - and the
PAGE 162 THE A.N.A.L.O.G. COMPENDIUM VOL. 1 v
v
weapon - of either the hunter o r the robot, do this: 3. When the co mp uter has made sure there are no
press the joystick b utto n and hold it down. While errors in the DATA lines, it will ask " INSERT DI SK
the b unon is depressed, yOll may move the joysti ck v
WITH DOS, PRESS RETU RN." Place a dis k with
in any direct io n - this will ca use the arm to rotate. DOS in drive 1 and press RETUR N. The progra m
As soon as you let go of the red bu tto n, the weapon will create an AUTORUN.SY$ fi le containing the
will fire. Maniac! ga me. When the READY prompt appears,
If you wis h to fire without moving the direction of the program is finished. It is a good idea to SAVE the
the weapon, simply press and release the red bunon Maniac! BASIC program just in case you need it
on your joystick. later.
Scoring. 4. To pla y Maniac! , place the disk conta ining the
Points are awarded to the hunter but not to the AUTORUN.SYS file in drive J. Remove any car-
robots. The robots get their pleasure solely from tri dges and turn th e compu ter's powe r OFF, then
frustrating the h unter. Scoring is as follows: the ON. The Maniac! ga me will automatically load and
hunter gets tcn points per level for each robot des- start. D
troyed, with a I,OOO-point bonus for making it
th rough all eight levels.
Typing the program . 18 REM ~MI~C C~SS£TTE ~KEA PROGR~"
Two p rogram listings follow this article. Listing I 2 0 REM
38 CLR : DI" H$C3'84):O=0 :L IME=4"8 : RES
is the main data and data checking routine, and will TORE 5000
create the cassette version of Maniac! Listing 2 40 P:O
58 LIME=LINEt18: ? "CHECKIN' LINE ";LIN
should be added to Li sti ng I fo r d isk users. E
60 FOR 1:1 TO 16 v
78 n=Otl
C asse tte instr-uc tions. 88 TRAP 148:READ J : lf 1=1 THEN If LINE
I . Type Listing 1 into your computer and chec k it ()PEEK (183) tPEEK (184)*256 THEN ? "LINE
"ilINE ; " MI SSI NG!":ENO
for typing errors by using C:C HECK. '8 If J=", THEN 158
2. Type RUN and press RETURN. The program 188 K$(O) =C HR $ (J)
110 p=ptJ
will check for errors in the DATA lines. If any error 128 NUtT 1
messages arc displayed, correct the lint's ind icated 138 TRQP 148:READ J : IF P=J THEN 48
148 ? "ERROR IN LINE ";LINE :S TOP
and re-RUN the program until all errors arc el imi- 158 ? "RE~OY CA SSE TTE ~ND PRESS RETURM v
nated. ":OPEN Ul , 8,0 ,"C:"
160 ? Ul ; >«$
3. When all the DATA statements are correct, the 179 CLOSE Ul
program will ask you to "READY CAS$ETfE AND 5080 O~TA 0 ,3 1,8,64 ,35,64, 16' , 69 , 141,2
L211 ,16' ,11' ,141 ,231 ,2, 143'
PRESS RETURN" and the console will BEEP twice. ~010 O~T~ 133 ,14 , 16',7' , 141 ,232,2,133,
Place a cassette in your program recorder, press 15,16',38,133,19,16' , 64,133,1634
5820 DATA 11.24 ,'6 ,'6,8 3 ,58 ,32,2 8 ,76,3
RECORD and PLAY simultaneously, the n press RE- 2,55,72,162 , 255 , 141,30,1251 v
TURN. The computer will create a boot tape con- 5830 D~TA 288,232,224,4,240,246,142,18
raining the Maniac! game. It is a good idea to CSAVE 4 ,7', 16',2,141 , 187,7',32, 148,2317
50 40 DATA 75,172,185,7',185,232,76,133
the BASIC program at this time. just in case you ,17 6, 133,188 ,185,233, 76,133 ,177,2430
5850 DATA 133,18 1, 18',127,7'. 24 .2 01 ,3,
want to use it again later. 176,18.32,210,64,32,184,65,L718
4. To play Maniac! , remove any cartridges from 5860 DATA 32,38 , 68,32,173,78,32,223,68
your system. Place the Maniac! boot tape in you r L32 ,17,71 , 18' , 15' .7',291,1484
~870 DATA 8 ,248,6,32,1 88,78,3 2,17',6',
program recorder, rewind it to the beginni ng and 32,188,65,16',11,24,237,1382
press PLA Y. Turn the computer's power OFF, then 5880 DATA 1'1,7',141 , 188,7',16', 2,141, v
1'8 .7',32, L8', 75, 1 73,188,7', I,, 5
turn it ON wh ile p ressing START. The computer 58'0 DATA 141,181 ,7',32,61,65,32,2 53 ,7
will BEEP. Press RETURN and the game will load 3,32,178,64,32,188,71,32,1586
5189 DATA 248,71,173,127,7',20J,7 ,2 48,
and run automatically. 3,76 , 4',6 4 ,32, 1 2 7,72,76,1645 v
5110 DATA 44,64,173,252,2 , 141,8 ,18 4 , 1 7
3 , 2 90 ,7',2 01,1,208 ,1, '6 , 1 73'
Disk in stru ctions. 5120 DATA 173,25 2,2,2 91,7, 2 '0,4 6.7 81 ,6
. Type Listing I into your computer and check it ,2 40 ,3 4,201 ,2 ,240,22,76 ,1' 43
5110 DATA 258,64,18, ,135,7',24,233, 4 7,
for typing errors with D:CHECK. Afte r correcting 157,173,7',18',13',7',24 ,233,20; 4
any typing errors, ente r the lines with Li sti ng 2 . 5140 DATA 16.157,177,7','6,16',1 ,1 41,1 v
'5,7',76,250,64,16',2,141,1812
These lines will merge with Listing I in o rder to 5150 DATA 1'5,7',76,250,64,16,, 3, 141,1
creau! a Maniac! disk version maker program . '5 ,7',172 ,1'5,7',185,127 , 7' ,2 088
5160 DATA 24,281,2,176,1,'6,173,787.7'
2. Type RUN and press RETURN. The program ,2 4 ,2 01,8,176,5 , 16',2,1536
will check for any errors in the DATA statements 5170 DATA 141,207, 7',2 06,207,7',173,29
7,7' ,2 81,1 ,2 40 , 1,'6,16',8,2886
and will display a message if any er rors 3re found. 5180 OATA 141 , 287 ,7 ',168,1,185,127,7' ,
Cor rec t any DATA lines that aH.' in error and re- 24 281 2 144 7 200 152,201 ,1 '10
51'0 06TO 4,288 ,2 42,'6,140,1'5 ,7', 16',
RUN the p rogram until all errors arc corrected. 255,141,252,2.,~,14 2 .182.7'.2282
VOl. 1 THE A.N.A.L.O.G . COMPENDIUM PAGE 163
HARVEY WALLBANCiER
v
16'il,Z',25S,57,Z',141838
177' DATA J/;S8,212,16!Z47,281,.,288,I, Assembly listing.
141 5 218,1 ' , ' 18,14z562
1788 6AlA 237,57,144,'1,32,11,57,185,2
38,51,12,32,231,56,184,14411'
17" DATA 168,24I,2J,162.J!254,4J,52,1
8' 4J 52 281 218 288 8,145,78
18'. 6ATA 16;.2.'.15~.4J.52.2'2.16.2J8
,136,280,233,76,18',56,281,148161 twlVEY WAlllWlGER by Char I fS Buhand
1811 DATA 1'2,3,288,28'.141,18.288,16,
'8,228,138,12,32,11,51,1"868
1821 DATA J2,231,56 , 1".17',16,111.56,
1".8,157,255,51,151,3,151'" CopYricjlt <C) (982 ~OG Magazine
1838 DATA 58,24,16' , 8.'6,162,28',16',8
,157,6,58,282,288,258,153261
18" DATA '6,174,18,211,224,28.,116 ,2 4
, 18' 7 58 21. 2" 173 18 1554.'
1658 6.t. t18 ,4 1.1~ , 2.1.J'.176,2'7.151
------------------------
Opeuting Systm Equates
,2J8 . 51,25i284,57~157~7~157287
1861 DATA 58~138~153.241~57,'6,16',8 ~ 1 ------------------------
'8 241,57,157,7 58,173 , 15'882 HPOm : $0118 iplayer 8 hor izontal posit ion
18~8 DATA 18,216,41,31",16,141,6,218, som i_issi I. 8/playfield (011 ision
16' 3' 141 226,57,'6 168475 MiPf :
1886 DATA i,12 ~ 48,I,t,. , .,18,18,68,116 HPOSP2 : SOII2 jplayer 2 horizontal position
,68,28,38,62 L63,161177 If'OSP3 : som jplayer 3 horizontil posit ion
18'8 DATA 12~,8"LIILI8,68,116,6.,28,3 1I'0Sl18 : SOll4 i.issih 8 horizontal ros ition
'~62,62,247.',8,1~1'6' pgPf : S0184 iplayer e/~laYfield (0 I iS lons
1'" DATA 72 L88 , 68 L46/;68,56,128.124,25 PlPl : SDIIC jp layer a 0 player (oi l isions
2,126,',8,286,88,68,1 3333 . lim : SOIlF itllyer 2 raphiCS reg Ister
1'18 DATA 46~68,56 ,1 28,124,124,23,,8,8 COLBK IOIIA
,66 , 36,68,28,68,24,164368
: i ackrroon (olor
1'28 DATA 68,126,126,231,8,8,66 , 36 , 68, ~L : SOliD ;gr~ ICS contro l re9 ister
48 68 24 68 126 , 126 16558' HITCLR : SOliE jcol 15 100 ' HIT ' (l eu
l,i8 6AT& 2il ~ 8,8~6',36,68,28,68,24,68 coon. : SOIIF ;(onsole swi tch por t
,126,254,7,8,8,166455 AIIOFI : S0218 jaudlo frequency 1
1'48 DATA 34,36,68,48.68,24,68,126 , 127 AUDCI : .0281 jaud io l,IollJlll' 1
224 ,8,B,68 L36,68,167418 AIIOF2 : S02i2 jaudio frequ ency 2
1'58 DATA 68,68 , 24 , 68,182 , 254,7,'~8,34
AOOC2 : .0283 ;audio 1,I0 lUfll' 2
,36,68,68,68,24,168251 AIIDF3 : S0284 jaudio frequency 3
1'68 DATA 68,182 , 127,224 , ' , 8,62,57,62,
57,62,57,8,8,38,16'15' AIIDC3 : .0285 jaud io 1,I011Jlll' 3
1'78 DATA 57, 18,57,38,57, 8 , 8,118,57,13 AlJDf4 : sOl86 iaudio frequtnc y 4
4,57 , 86 , 57,74 , 57,178838 AUDC4 : .0287 jaudio 1,I01lllle 4
1'88 DATA 74,57 ,74, 57,8 , 8,58,57,58,57, ~01l1 : S02iA irand. nlftber generator
58,57,',8,122,178743 IR1lEII : S028E ilRO interrupt enable
1"8 DATA 57 ,1 46,57,'8,57,16,88 ,1 44,38 PltIiASE : S0417 jPIH base address
,41,1,255,8,',8,171733 WSYM: : S04iA ;Nil t fct' horizontal Sync
2888 DATA 8,1,255,226,2,227,2,8,52,8,8 VCOOO : $0410 i~an l ine (OOntfr
,8,8~8,8,1724'8
SfTI/IIJ : SE4:iC jSft l,Iertical blank uectct'
XITVIIi : SE462 juer t ical blank exit Vfctor
• SID INT
ATIIACT
:
:
SE465
S!l40
j5erlal I/O intt iilization
iatract IIOde counter
C HECKSUM DATA
(See pgs. 7;10) ---------------------
Syst~ Shadow Registers
~
-------------------------- "IRVEY ClD jc lul' eitel_'ll 41i19
Pliy,r I t11~silr Rf:t1 $jI:acr JSIl SIOINT ,stop cassl'tte
~
-------------------------- lM . ' 3'+SAljdisFlay for ' 3'
STA JH.t1 ;3 IIOJts (diso l ilY)
~ ORG S3888 jout of t'Jfryonrs way lM 13 j9ft 3 l lns
STA LIVES pnitiall2l' coont,r
~ f!1 OS tIS! :first ilru not us,d lM 1',' tfAljdisp l ay for ' I '
HISI. OS >81 ,tlis;i I, gl'lphlCS irU STA ~ jstorr In t~f -four
~ PlRI OS .81 iphytr I graph!CS aru STA 9imt! jbyb; 1J5.d for th,
PlRI OS >81 ipl ..",r 1 gr~hlcs aru STA 9'«11+2 iseorr displ.ay
~ PlR2 OS '81 iphiyer 2 griptllcs ilrfil STA ~lI1t3 jUta.
PlRJ OS S88 ;play,r 3 graphics aru IIIR£ lM 161 i~t I second count
~
STA TIH2ST js.t rrsrt valul'
------------------- STA CDlKJ2 ;set s)'stea Hat" 12
~ Prog'_ rntry pO int JSi ClSC~ :( !tar gall' playfi.ld
------.--.--------- lOY '2 ;dlsplll)' 3 nwbers (8-2)
~
INtr1S JSR PIJTNlt1 :put thf nUllbl'r on sernn
JI1P IWMY DEY ;deer,,,nt nUlbfr counttr
~
BPl INlI1S idont ytt? No.
-----------------
GaIlE! dlspln lis t
lM 'OL&SFF jYts. IIlrl byte OL addrtss
~
STA SDlSTl iDlJo lntrr <11M)
----------------- lM '0l.!256 jnl byte 01.. aderrss
~
STA SlllSTl+I jDl pointer (~II)
III DB t78,t71l j32 blank scan l ine, lM KI4 jset PF ovtr 'fER
~ DB S71,S78 STA Gf'RIOR iQr~hiCS prior ity
DB S47 jrod! Z I in@ ....... U1S tit t lM 148 jfi t lIItall
~ l1li DISP iaddr.ss of 9i't display STA BYlOC iShrtin~ locatton
DB "7,S97 j911Or' IIOdt 2 lints lM '1 96 illM lIIal
~ DB S87,S87 STA BYlOC+1 ;shrtin1,ocation
DB sa7.sa7 lM 168 ;Itft wa I
~ DB S17,S17 STA BXlOC istarting location
DB Sll STA tftSP2 jllarG.lart r@qist@r
~ DB S7I,S78 jsl[ IP 16 J, n@s lM 1184 jr tght liltal 1
DB ..,6 jllOdf Iii lit IIfIUtS ti l t ST• MOCti ;start ing location
~ IIW Sl.INE jaddnss of scor. Iln@ STA IfPOSP3 jt\;lIrIinrl! rl!glshr
D8 .." jJI.Ilp on !Jtrlical blank lM 1122 icenttr SCf"'fn-4 color clocks
~ IIW Dl ito start of dIsplay l Ist STA I¥IRX :Har~fv ' s initial X pos it ion
lM 155 jc.ntpr PIH-8 bytts
~
--------------- STA ~RY ;Har~@y ' s initial Y lIos itlon
Scort ll nr dah lDA 1It2E iset PII1 ~ on bl ts
--------------- STA SIJtCTl :stor. in L'WI contro l
~
- SliHE DB
D8
DB
' R' fSAi
' A' tSAl!
' B' tW
lM
STA
lM
STA
13 jset Pitt tnable bits on
GWlCTl ;storr in ~raphtCS contro l
*'11256 ;gel h l ~ yle of Pitt adO'
R'1BASE ;,o in t uciwart 10 it
DB
- DB
DB
' B' +SA8
' l ' ttA8
' T' +SA8
'S' +SA8
lM
STA
lM
1$96 j I ~I blut color
COlOR2 ide ault col()r 100 dark
1It4B ip ink color
~! STA
~
. :' +1A8 COlOR3 ;s.n btrt
lM IItIB i90'd co lor
~ ~tr1 DB 'J' itAl ;nll'lb.r oi rabb IIs STA PCDlR8 iStt rabbit color
DB ' ' tIM lM 1It98 ;blut co lor
~ DB 'S' tSAf! STA PCIllRI ;Stt IIlssil. I color
DB ' C'+SA8 lM ts34 ;rtd-oraner color
~ DB ' O' +SAI STA PCOlR2 jl.H liltal color
D8 ' R' +SA8 lM "C4 ;\Tern color
~ DB ' E'+tAB STA PCOlR3 ;r'ght lUll color
-
~
~tr1
DB
D8
DB
DB
' : ' +W
"'ftAl jseor. disp lay
"1' tSA8
"' fW
lM
STA
lOX
lOY
'1 jin.tial i2f tri1rf" ilig-
STRI6F ito no shol iiI',
fN256 jidd-.SS of W (HSB)
IN8t6FF :addr.ss of VB <lSB)
DB ' 8' tW lM 17 ;dtftrrtd !Jut leal blink OI3t
~
JSi SElVIPJ iStt d.ftr,.,d Vblank v"tOf'
-
~
-----------------
6_ 0'J'f" IIts~9f
-----------------
lM
STA
lM
STA
ITIWF jidd- of I Iaer I rootint lSS
CDTMI jStt tilfr I !JutOf' lSB
.TII256 ;add- of I,atr I routint /158
CDTWlhljs.t ttl.r I !Jl!ctor HSB
00'IS6 D8
~ DB ;~:w , lM
STA
1T2&fFF jida' of t ilter 2 routin. lSB
CDlt'IIZ jstt t i.,r 2 !J"tor lSB
' ;r l ,$88
-- P5I1S6
D8
DB
DB
' pr,s '
IS ' ,I I ' s'
lM
STA
lM
STA
1T2I256 jidcr of batr 2 roulinp /158
CD~2+ljstt tiltr 2 !JfCtor NSB
'1 jget 4.?-i stcend (ount
CDTl'fJI+ljstt systm h ,ur '1
DB ' hrt',iBl lM 18 iQtt a ltro
STA HlTClR :r.stt coll Is ion r.gisltrs
------------------- STA DIESW irabbit IS aim
~ Indial inlion Codt STA TlCTce ireset t letoc counter
-------------------
'-
~
PAGE 170 THE A.N.A.L.O . G . COMPENDIUM VOL. 1 U
Hel
BPI.
JHP
lM
lEI
IDE
ClJiSll.
i No •
i'('S,.ar. Ilyes
jchect for start §&fitch
ST.
lM
ST.
PlPlT jstorr In t~ lIarlable
ptPF iphyer to PF colliSions
PlPFT jstOl'e In t~ lIarlabl.
v
oN) v
"" jauk Mf bi t lM riSOlND j tr.uyre soond counhr
IH H8ARS . jstart? No.
-
JHP ~ ir.shrt gaM IfII l«l!Hl lend of sound? '(fS. J
DEC NSOlND ;decraent uo\lllt
-----------------------------------------
Syst.. ti.,r I, Intfrrupt hifldler.
lSR
OIlA
STA
•
AlIlC~
idlYlde lIoluar by 2
jadd pure ton.
'-'
j(han~ 1101_ '-'
Used to SJlffd up Wills .u.ry 4.25 Sfconds.
--------_._------------------------ NOSND lM
IfII
VIlLI igt:t lctoc uollllK' UlUf
!Hl2 ilf (I Nt produce no sound -./
TI lM T1H2ST ,get ..all speed OEC VOLI jdecrellent volt. ualue
OF 12 j ... st stop at two
IlIIA Kee ja.llsk on the distortion '-'
BEg 11"' iis it twO? Yes. STA AUDeI jgen.nte th. tlctOC sound
OEC TIH2ST jNa th.n decr_nt . SND2 lM 1.IX.2 ;9f: t shuff Je 110 IUIIf v
T1HI lM .1 jO' I 4.25 second cycle tu.. IfII SND3 jlf (' we produce no sound
ST. CDTHJ1t1 jrfstt tilWr 11 DEC 1.IX.2 jdecrfllent !JoltlN valu. v
RTS ,return DIIA K81 jaask on the distortion
STA AlIlC2 ;generate the shuffle nOlst '-'
SND3 lM FREQ3 igrt §hot ~requency
v
~
~
VOL . 1 THE A.N.A .L.O.G . COMPENDIUM PAGE 171
~
~
1M: fREIl3 ; Hlcrl'lIt'nt shot frequ,ncy sec PIOMi jother pi C at .13 sec? No .
INC fREiJ lM PK2+1 ,X i91!t i ltrrnate picturf HSS
_I
jda it again
'-' 1M: fREIl3 jind one last tilt PICIMl sr. PICt! jstore HS8 of pIC address
v STA All)fJ jchangt frf~LlenC Y (IOwtr) lOX 13 jeount 3 deMoto •
lM olEiloi jis r abbit ring CHKSTl< lSR STICKa jshift bt t into carry
BEO iNa. continue BCS CHKNXT jcorrect direct ion? No.
~
1M: olEiloi jVes. 2 second die ptrtod lM STBlX,X jelled X IIOI/,.nt dirrctlon
1M: PCOlR8 j[h a~9f rabbit (olors 8£0 CHK8 jllOLienent allOlHd? No.
~
1M: poue ;a9;11 n STA XTEJof jstore XlIIOVewnt yalu,
lJ)\ PCOlR8 i~t nu.ber CHJ(I lJ)\ ~x jchect Y IaOwr.ot dirut Ion
~
~
ASl
ASl
ASl
•A jl 2
;"
BEO
STA YTEHP
jroJPllent al1cwed? No.
jstOf'f Y IIDLiPllent Llalu.
A jfS CHKNXT D€X jdo nut stick posit ion
STA AUDf2 as frf~lJenty BPl CHKSTk jdooe yet? No.
~
lM
STA
K88
AUIlC2
jllSf
iget dl stor i on
jllaIC, sound
lM
0tP
PiPlT
HIC
;r.t
j
pl ayer 8 (011 i si on
rfVright S~tlf?
~
JK> VJI)( jUtt uertical blank IH ~JlI.E jNa. Check in dUll! IIIalls
DEC ~111 jdeer,.n t 1 iv,s dispL1Y
~
lHlJVI lJ)\ WINC ich,c_ push wall up DEC LIVES ,dfcr'Mnt 1in,s counter
INC ol Eiloi
-
BEQ 1HW2 iPush up? No . ithf rabbit has di,d switch
~
DEC WINC idfCr,.,nt fUSh up count.r ~ N«) H84 icheck Ifft wall coli ision
lM BYlOC i9ft top ilia I location BEO WRY ihit I'ft Wil l? No .
~
IIW 128 iCCll~.J.re lII ith top of scr"n 1M: j'(fS. Hove rolbbit to ri g,t
SEQ 1HW2 iit op? '('5. lJ)\ 18 jget uro vi luf
~
_2
DEC moc i-au. Will up srA XIEll' jstop rabbit X lIovfIWnt
II1PRT lJ)\
-
lM 1.111«;+1 icheck push lllall PIPLT iget p]ay.r I collision
~
~
BEQ
DEC
lJ)\
lHlJVJ iPush dlJ,lln? No.
WINe+1 idecrmfnt push ckNl count.r
BYLOCfj jget bottll'l wall locition
""" N«)
BEQ
DEC
HI8
111P1Jf'
jchfCk ri~ht ilia!! collision
ihit righ 11101.1 I? No.
iYes. !iOuf rabbi t to left
Il'I' 1284 ;c~.J.r' bottlJl of ser"n lJ)\ II jget uro ulu,
~
BEO lHIJV3 jolt ottm? y,s. STA XIEll' istop rabbit X .ovflltn t
IIf: BYLOCtl illOV. Will d<NJ II1PUP ClC ic1ur carr y for idd
~
lHIJV3 lJ)\ WINC+2 ,chec_ push 1.1101.11 I'ft lM BYlOC itop lIIi11 Y location
SEO TI1(J!4 iPuih I.H? No . AoC 14 joHset by 4
~
DEC W1NC+2 ;aecr'Gfnt push I,ft count.r lSR A jdlVldt by 2
lM axlOC j9ft I'ft lIIill POSI t ion CHP HART jClllpir. rabbit Y location
~
STA HPOSP2 jllOY! I. ft Will playn sec IH'OO ihi t top Mill? No.
Il'I' 13'1 ichfCk for I'ft Will 11.1t DEC ~111 jdeer!lK'nt I iv!s disp lay
~
8EQ lHIJV4 iit li.it? Yes . DEC LIVES jdecrr.ent I infs counhr
~
DEC 8XLOC jllOV' lIiali I.H INC olESW ithe rabbit hiS di!d SIIIitch
lHIJV4 lM WINC+3 jcheck pUSh wal l right II1PIJl lM HARY iget ubbi t Y loc ation
BEO Tl1OA< jpush rlt~ht ? No. ADC III ,offs. t by 18
~
DEC WINCf3 jdtcr.l1.nt push righ t counhr ASl A jlMll tip!y by 2
lM It<lOC+l jget r iljlt wal l position CHP BYlOCti icmpar. botlla wal l Y
~
STA HPOSPJ ,GOV' righ t wall play.r ace fmt' ihit botteD 1rrIi1J? No.
CtI' 12tB jChfCk for rl ljlt .... 11 Ii.it DEC ~111 jdfCr.llfnt i lu!s display
~
8EQ lHlJVX jit lillit? Yes . DEC LIVES jdecrHlfnt I infs counhr
1M: It<lOC+ I iroJf wall riljlt INC DIE51' i th' ribbit has di.d switch
~
lHlJVX lM 18 iget i uro tmIP ClC iclur carry for add
STA ATIW:T jpoK~ out itract IIOdf lJ)\ HARX i9f t rabbit X posit ion
~
STA Xl81P ;Zfro ribbit X Incr".. nt AOC XIEll' jadd X incrulent
STA YlEII' intO rabbit '( Increcunt STA HARX iSiV! nrw ribb i t X pos i t Ion
~
lM STICK8 igf t Joystick ulu. SrA ff'OSP8 iposition rabb i t plily.r 8
Il'I' fS&F jol t cenhr POS I tlon? ClC iclur carr y fllr idd
~
BEQ CENTER iYfS. skip cod, lM HARY i9ft rabbit Y position
lJ)\ RTClCfMjgrt real U.. clock lSS AoC Yl81P jadd Y IncrMfnt
~
lIlo 1S17 jolt 117.5 s,cond ,m_? STA HARY jsaV! nl'W rabb i t Y position
IH CENTER jNa. ski p codr TAX jUse position as index
~
lM 1$11 ;g.1 shuffl, frequfnc y lOY 18 jini boll ill! picturf counter
STA AUOF2 jset fr.qurncY r.gi ster HflJHAR lM (PJC),Y ige t rabb i t pictur! brb
~
lJ)\
STA
"14 jOtt 1/01111! vi lu, SrA
INX
PlR8,' jstor! in play,r 8 ar,a
ji ncretunt player po inhr
vct.2 jset shuffl! uolllM'
~
CENTER lJ)\ STICk8 ,get jorstlck ualue INY iincrment pictur, pointer
S£C jset urry for subtract CPY II~ jch!ck for !nd of picture
~
S8C IS jVilurs 5-15 onl y IH IfJJHAR jolt .nd? No.
~
AS!.
TAX
lM
• i5-15 nOlt! 8,2,4, ...
iUS. for Indn
RTCU1(f2j~t real tilll' clock lS8
lM
CtI'
STA
STRIG'
STRlIlI'
STRIGF
jg, t trl9Q!r valu!
jCCllparf with tri~r fl ag
isau, nN trl~fr 101.9
~
RDR A i iuide br 2 BCS tllFlRE jshot fir.d? .
RIll A idivldf by 4 lJ)\ XlB1P jribbit X iner"nnt
~
ROR A jdiuide by 8 IllA YlElI' JOR rabb it Y i ncr~nt
RIll A jcarry seVr.Sft at .13 SfC 1M FIRE~ jrabbit stat ioflolry' No.
~
lM PKI,X jgft rabbit pictur. l 58 1M: STRIGF iSft trigc:w flag to 1
sec PIOf..\. joth!r pic at .13 sec ? No. H NOflRE iSki~ flf"f routine
~
lJ)\ PK2,X jg.t altfrnat. picture LSB fIRE~ lM H~' jini ialiZ! frequ!ncy
PIIlM ST. PIC jstor. lSS of P' C addt.ss STA fREOJ jzero iud i 0 fr.~ 3
~
lM PKhl,X ;get rabbit piclur. NSB lM HI4 jshot 1/ohm t istortioo
-
-./
~
ASL A jaU:' shot tMicr ilS hst IJO\ SIOCf.X ;~ In '( i nerHltnts
STA SINCY,X jSft aiisilf Y incrMfn t
D£l( j d!CI" • • nt pO l llttr ~
a.C iclur C1f'ry for ildd a.C iclur Cilrry for ildd
LIlA 9IJTX,x j9ft Iissil. X ~OSition LIlA 18 iget ulue for add v
ADC SIHCX,X jildd X incr..,n RTS j. return to the progran
STA ~X istor. nr. X DO<;it:r..l
v
STA Xiposit ion _iss i!. Clur the gilIIf plilyfi .ld
DI' 8Xl.oc.1 jCOlJlilrf I ;ssil. with ... l1
ClSC~ LDX '211 jsrt 1-199 bytrs
v
OCC HITtF jhi t right Mill ' No.
JSR IIHCXY jZff'O Iissil. incr.nts LIlA II jto l.ro '-'
ADC WINC+3 jildd B to wall incrftlfnt eLI STA DISP- I,Xj stor. in disp lay
STA WUC+3 inr. ... 11 ;ncrflltnt OEX icount da«I v
HITLF
JII>
SOC
DI'
BCS
.
NOflOT jcontinu.
j~fSft
for rif.t side
BXLOC jC.,ilrf with 1ft Willi
tmOT jhit I.ft wall' No.
IN'
RTS
Cli iPist Ifro y.t? No.
jrtturn to progr.
Put undat n!llb.r fr~ 1-9 on serren ilt
iI rillc\ca location 8-199
v
'-'
JSR IIIOY ;nro lissih ilcr!IUllts v
PI11l«.Il LOX ~ i9ft rilldca nlllbrr
~
v
~
'--'
CPX .2t1 ; I S nUitber ( 298? DB S3C,l7E
~
BtS PllTNtI1 ;No. try anothfr DB SFE,S!7
~~ jYes. try i9iin
lM jSle if spur is oc:cupll.'d IW!OO DB BI jdcwn vie. 12
v 1M DB S!z,S2'
M lM IImJ1 i~t another randan nUftber DB 13C,128
!WI) "If j Ill it it to 1-15 DB Sle,SIS
'-' j i snUlbtr ( 18?
0'1' III DB S3C,S7E
'--'
BCS !'NI jNa. try iIInothfr DB S7F ,SEI
STA VTBL,'f; save nllllbtr II'IRtI'I DB I I jllp "ihl 11
'-'
IlII<\ CTBl,Y JOR uith color DB S~4,S24
STA OISP,X iput nUilber on screen DB S3C,SJe
~
TXA jrtl)l,lf ~rfrn oHstt 10 A DB IJe,SIS
STA ATBl,Y jsaVf serern offset DB S3C,S66
'--'
RTS jfnd of routine DB iFE,SI7
IMP2 DB 8' jllP yi .. 12
'-'
Erase n_r frc. scrun DB S22,124
DB S3C ,I3C
v ElW<tI1 lIlA II igrt nra for bhnk DB S3C,S:t8
lOX ATBl Y i~t I POSition on scrrrn DB S3C $66
~
STA
lIlA
IWD
~
"If
i lank nlDbfr on scr"n
jget rinD nt*r
j.ask oH high bits
DB
DB
S7F:SEI
8,'
'-' ~ jml<t' it SI8 ..... IF .. m l jrabb i t pictures 5,t I
STA
"Ii
AUDF4 jlls!.' as sound f rf~UfnC Y
"I IlIoI
IlIoI II\RlrrI
~
lM 138 jini lial i n - IlIoI .. ml
'-'
STA NSDlffil jvoltDf COlJntu OW 8
RTS jrnd of routine IlIoI ..Rlfl
OW IWIlfi
'--'
--------------------------
Progra table!s i;nd cOftstants
IlIoI
OW
~Rlfl
i
~
-
DB ---------------------
~
DB S3C,S2E
DB S3C,S38 .. RX DS I jHiru y' s )( locatin
~
DB S7S,S7C OS I jHirVfY' S Y location
DB S7C,SEF BYlOC DS 2 jhorizontal Mal l Ylocations
_RI DB 88 jfront viet! II BXlOC OS 2 jvertiul ",.. 11 X locat ions
'-' s42,'24
DB VOl! DS I itictoc vol ...
~
DB S3C,S14 V!X.2 OS I ishuffl. volu.
DB S3C,'18 fREI3 DS I ishot frequency
DB S3C,S7E NSOlN) OS I jPlc!C nu.btr up sound
'-' S7E ,SE7
DB T1CTOC DS I jt ictoc sotJnd counhr
~
II>RfRl DB 8.' jfront view 12 T1M2ST OS I jNa] t .speed tj~r
DB '42,S24 WINC OS 4 i~al1 lOver counters
~
DB S3C,S28 STRIIT OS I jtrigger cc.p~e register
DB 'le,S18 XTEMP OS I jte8porary war lable
~
DB S3C,S7E YTEHP DS I jt ~orar y var iable
DB $?E,'E7 P'PLT OS I i~ay'r I coil ision shtbr
~
II>RDNI DB 88 ;!bIn view II PBPfT OS I j to PF coll ision SlIado&ol
DB S4.,S24 VTBl DS 3 jvalue of "s on S(reen
DB SJe,SH ATBl DS 3 jscre,n offsrt to "s
'- DB m,m SHOTS DS I jshot ,nable (ounter
'-'
PAGE 174 THE A .N .A. L.O . G . COMPENDI UM VOL . 1
ENO It\RVEY
•
u
Cube Demo
v
5 REM *** CUBE 'FIll' GRAPHICS DEMO **
*18GRAPHICS 1+16:SETCOLOR ••• • 12:SETCO
LOR 1.3.2 :SETCOLOR 2,7,4:HUE=1
2. FOR CUBE=l TO 15 : RAND=RND('J : HA~ =15
+15*RAND:KIN=5+5*RANO:P~=2+RND(8J*116:
PV=2 +RNO(8)*52:REM *** 15 CUBES ***
38 ~1=PK+HI.:H2 = PH+MQH:H 3= H2+MI.:Vl=PV
+~N:V2=PY+HAK:V3=Y2+MIN:AE" ***CUBE
COOROS ***
35 COLOR ':PLOT ~3+1.V3+1:0RANTO H3+1,
Yl:0RANTO H2,PY-l : DRANTO PK- l.PV - l
36 DRAMTO PH - l,V2:0RANTO ~l,V3+1:DRANT
o K3+1.V3+1
4. fOR "=1 TO MIN:PLOT PH+N PY+N:DRAMT
o H2+N.PY+N:PlOT PH+ •• PY+N:6RANTO PH+N
,Y2+N:NEHT N
5. FOR N=1 TO HAH+l:PLOT Hl,Yl+N:DRANT
o H3,Yl+N:NEHT N: REM ***
35-5' ERASE C v
UBE AREA
55 REM ******
NON DRAW & fILL CUBE SIDES
***
6. COLOR HUE:PLOT X3,Y3:DRANTO H3 Yl : D
RANTO Kl , Yl:POSITION Hl,Y3:POKE 165, HU
EDIIO 18.U6,',',"S :":'OSU8 2 ••
1. COLOR HUE:PLOT K3,Yl : DRAWTO H2,PV : D
RANTO PH,PY : POSITION HI LY1:POkE 165,HU
E : KIO 18.116 •••• ,"S:":GO-:tUB 2"
8. COLOR HUE:PLOT Kl,Y3 : DRANTO Hl,Yl:D
RANTO PK,PY:POSITION PK , Y2:POK[ 165,HU
E : XIO 18.116,8,8,"5:"
, . PLOT Hl . Y3:DRANTO Xl , Y2: DAAWTO PK ,Y
2:POSITION Kl,Y3:KIO 18,1I6,8,8,"S:":NE
XT CUBE
188 REM *** ROTATE COLORS A WHILE
III FOR ROT =l TO 588:T =PEEK(718J:POk E
***
188,PEEK(78~):POKE 18~,PEE«(118):POKE v
11',Y
128 FOR DELQY=l TO 2':NEXT DELQY:NEKT
ROT:RUN : AEM ***
DO IT AGAIN '
28 8 HUE=HUE+1:IF HUE =4 THEN HUE=1
***
218 AETOR"
CHECKSUM DATA
(See pgs. 7-10)
v VOL 1 THE A.N .A. L. O. G . COMPEN DIUM PAGE 175
'-'
'--
'-'
v
'-'
FILL ~ER UP II
~
'-'
'-'
'-'
'-'
If you've ever typed in a ga me program from a 2. With Listing I in your computer, type in List-
computer magazine hoping for an a rcade~q ua li ty ing 2 . This operation will merge the twO listings.
masterpiece, you 've probably been disappointed. Make sure the li nes were entered correctly, then
Games written in BASIC are usually too slow to CSAVE the new program.
handle the complex graphics and game logic neces~ 3. Type RUN and press RETURN. The program
sary for an enterta in ing arcade~style game. In an will begin printing the li ne numbers of the DATA
effort to satisfy those avid v i dco~gamers out there, I statements as it reads and checks each one . It will
have written Fill 'Er Up!, a public-domain asscmbly~ alert you if it fi nds any prob lems in the DATA.
language game. Correct any problems in the data lines and re-
Typing the program. RUN the program until all the DATA is checked
Before tackl ing the program listings acco m pany~ and correct.
ing this article, let's look at them and sec what they 4. When all the data lines arc cor rect. the program
do. will ask you to " READY CASSETIE AND
Listing I is the main data and data checking PRESS RETURN. " Place a blan k tape in your
romine. This listing is used to create both tape and recorder, press RECORD and PlA Y simultane-
disk versions of Fill 'Er Up. T he data that makes up ously and press ready. When finished, the
the Fill 'Er Up program listed in hexadecimal (base BASIC " READY" prompt will appear. If you
16). The program is listed this way so that it will run have not CSAVEd the BASIC program, do so at
with 16K cassene systems. I realize that those DATA this point. You may not need this program again,
statements aren't fu n to type in, but they are a neces ~ but it's good to have if you ever need another
sary eviL copy of the game.
Listing 2 should be added to Listi ng 1 if you are 5. To play Fill 'Er Up, rewind the tape crea ted by
using an ATARI cassette recorder. the BAS IC program to the beginn ing. Turn your
Listing 3 should be added to Listing I if you arc computer O FF and remove any cartridges. Press
using a disk drive. computer O FF and remove any cartridges. Press
Listing 4 is the assembly-language source code PLAY on the recorde r, then turn your computer
for Fill 'Er Up, created with the ATARI Macro ON while pressing the START key. The com-
Assembler editor. You DO NOT have to type in this puter will BEEP once. Press RETURN, and Fill
listing to play the game! It is provided so that readers 'E r Up will load and run autOmatica lly.
interested in assembly language ca n see how the pro-
gram works. Disk instructions,
Follow the instructions to make either a casserte I. Type Listing I into your compu ter. Use
or disk version of Fill 'Er Up. D:CHECK to verify your typing.
Cassette instructions. Z. Afte r Listing I is correctly typed into your
t . T ypc Listing I into you r computer. Use the computer, type in Listing 3. The lines will auto~
C:CHECK progra m to check the accu racy of matically merge with Listing l .lt'sa good idea to
your typing. SAVE the whole BAS IC program at th is time .
PAGE 176 THE A.N.A.L.O.G. COMPENDIUM VO L. 1
3. Type RUN and press RETURN . The program points for each unit over the target you have filled. If v
will begin verifying the DATA lines, printi ng the the TARGET amount is 8000 and you fi ll 9000
line numbers as it checks cach onc. It will ale rt units, you receive 2000 points. " Fill 'Er Up" may be
you if any errors are located in the data. Fi x any paused at any time by pressi ng the space ba r.
incorrect lines and re~ RUN the program until all This game con tains 16 levels of difficu lty. The
errors are eliminated. level number is shown in the lower left corner of the
4. When all the DATA lines are checked, the screen. v
program will tell you to "INSERT DISK WITH You have th ree lives, shown in the lower righ t
OOS, PRESS RETURN. " Place a disk with OOS corner of the screen. Good luck! 0
in drive I and press RETURN. The program will v
write an AUTORUN.SYS file to your disk. This
file contai ns the Fill 'Er Upgame. When finished,
1 REM *** FIll 'EA UP' IT ***
18 OOTO 8,1,2,3 , 4,5,6,7 ,8 , ' , 0 , 8,8,0 , 8,
the BASIC "READY" prompt will appear. Make 0 , 0,10 , 11,12,13,14,15 v
28 DIM o4T$('I).HE~( 22 ) : FOR X=8 TO 22:
sure the BASIC program has been SAVED before RECO M:HEKCX, =M: MEKT H:lIME =" 8:RE ST OR
continuing. E 1080;TRCP 60:? "CHECkIMC; DATA"
ZS lIME =lIIfEt18:? "lIME:";lINE:REQO DC
5. To play Fill 'Er Up, place the disk containi ng the
AUTORUN.SYS file in d ri ve 1. Turn thecom~
T$:IF lENC04tSl(),0 THEN 118
28 04TlIN =PEEkCI811tPEEkCI84)*Z56:IF
ATlU()LINE THEN ? "lINE " ; lINE;" KISS
°
puter OFF, remove any cartridges and turn the INC;!" : ENO
computer back ON. Filt'Er Upwiliload and run 38 fOR H=l TO 8' STEP 2:o1=4SCCD4TSCX, v
Kl) - 48:02 =4SCCOQT$(X+l,Htl» - 48 ! 8YlE =H
automatically. EK(OI1*16tHEH(D2)
35 IF P4SS=Z THEN PUT Ul,8VTE : NEKT H: R
G ame d escription. EAO CHKSUH:GOTO 25
You have been assigned to bui ld a series o f water 48 TOIAL=tOTAlt8YTE:lfEKT H: AEAD CHKSU"
:IF TOTAl=CHK SUM THEN Z5
reservoirs in uncharted territor y. Unfortunately, an S8 GO TO 118
electrified starfish (don't boggle; read on) is patrol1~ 68 IF PEEK(I'S)( ) 6 THEN 119
ing the area. Using your joys·tick, you must 188 ? "WAITING FILE ": P4SS=2:lIlfE ="0 : R
ESTORE 1098:TRAP 60 : (;OTO 2S
manuever yourself around on the screen , building 118 ? "84D DATA: LINE ";l INE :ENO
1000 DAT4 A' 25 8581A,I(8S,24,00858885'1
walls to hold the water, while avoiding the starfish. 48098t80'1'JE680E6'10004E681E6' ZAS, ZC'
You start out on the white border surrounding the 23 08ECAS'IC'0'00E64C2014 ,6 16'
1810 DATA a'00802F0280100880C88 24, 7480
planned resevoir area. You may move around on C402A'C480CS0 2A'OA80C60 24'3480C7Q2A'F 7 v
these white walls by moving your joystick in the 80 3 0824,2980319 24' 2E8D2f,1 1864
desired direction. You can build a reservoir wall by 18 2 0 DATA 82A'838DJOD94C281'2865E(A,88
027f'S80CA18f88D14 228015 228 016 228 0 1722
moving into the black "uncharted" area whi le A'11806f820'8180A C22 80C4,J 5 482
pressing your joystick bunon. The walls you make 1030 DATA 22282F15 4'4980672 24 '888 068 22
A'00A204,01' 21' 0 2421C410f 7 A285'035 21CA
can be any length, and must be terminated at a white 18FQA'8880C(22858'80C622.28133
1840 DATA 8D1E008D2f828D9E04802822858A
wall. When you finish a wall by hirtinga white wall, 809802A2B5'OI0 22C A1 0fA8D26 22 A'B3802C22
the area you have enclosed will fill with water. Do 0"0803C214'8A80C482A'24,24483
NOT run into the wall you are buildi ng or you will 1050 DATA 8D C5 8 2A" 48DC6024'C48DC78 2A'
9880C8020'768DC1024'3F80C2828DC302A,34
be destroyed. If the starfish hits you or any part of 80 C08 2 A'' 28 0388 2 A'29 80 31,2 '683
the wall you are building before you complete it, you 1869 DATA 02498AA21F4'86285CE4A'188087
D40 '2E8 D2f0 24'838DI0DOA'40808ED44C'61 5
wilt be destroyed. On levels 1,2,4,7,12 and 13 you A'99427F'D8011,00912'080,34142 '-'
will be safe from attack when standing on a whi te 1870 DATA 12,08913'D8813CA08EE60A58384
8580A'008581968926818680A58885842681A5 U
wall, but on other levels the starfish can destroy you 818585968026818680268JA5,3886'
on contact at any time! 1980 DATA 80J6658 (8580A58165858 5 810 ,08
1865898580A '386581858J AS8 22'03 4AA5 824 A
If you do not complete the levels in a certain time (A1865888580A58J6'008581,43824
period, electrified sea urchins wilt begin appearing 19'0 OAT4 6842808682A2998683294615A683
A'90A0 27'1888818F 8E8E05600EB4'8 380A622
on the white walls, moving along it looking for YOU! AfA6 2280'2228582B O'6 2285. 4'247
These creatures prove fatal on contact, but they can 1180 DATA 8 380 ' A2 2804722 BO'E 2280 A8 228o
A2228oA,22 28 4615807E2248891180'1 88 0 582
be destroyed by trappping them inside a completed 186047228582 A58 31 86048 22,5 4123
resevoir. The sea urchins have no sense of fair play, 1110 DATA 858 3C EA' 22 000fCEA6 221988A'58
8588A'54858C40 76 22 J86'01802'2 2 4'888014
and will "gang up" against you whenever possible. 72 801522801622801 727 802' ,5 8686
At the bottom of the screen arc several informa~ 11 20 DGTG 118 D1Sl18DZ022A'ff80132220. ,
1AAOF4228"0802C21AOf'2Z8"88D2D214E26
tion displays. "TGT" indicates the T ARGET area 2280A1 2 1802'22 8081 21802A ,62 '1 7
you must fill with water before you complete the 1138 OCTO 228 0C1 21 80 7022 80E1 2185,585"
A'04802322Z8"IAA'09804C22AA'00'23'08'
level. "CUR" indicates the CURRENT area you 2,CADOF 78 0082280Cf2ZAOZ7,67'13
have filled. Once CUR reaches TGT, you have com~ 11,0 DATA 2Z 09fBA'f080000ZA,fE8D92DZA'
FF8084D 2A'A38D8J028083D2808502A'988540 v
pleted the level and are awa rded points. SCORE A58A0823A58'F82 7 AE262280, 7 4064
indicates the number of points you have gained . At 1150 DATA o1210017A 5 8B8582A58C858320'6
lSA088808A72 3 180D07E 22 F88 3 4CD118A587f8
the end of each level, the computer will give you 2 664C'CIA4C7416C'84858 7 AO.7'8S'
" V~O~L~.~1____________________T~H~E~A~
. N~.~A~
. L~.O~
. G~.~C~O~M
~PE~N~D~I~U~M~________________~P~A~G~E~1~7~
7
~
O€SIN1 OS STA LO :f1Et10RY lUCJlTHtl
~
SHFUP DS 51. O€STLO ;OF \1411.
[)£STLO OS LD' 18
~
DESIHI DS COPYLP LOA ILO) Y
SHTIHI DS SIA (DESllD) , T
~
SlfT lMl DS INC LO
SIfTIMI DS )NC DESTlO
~
SHORn, os lIiE INCOO
DIRSAIJ OS INC H!
~
HOlDSii D5 INC Ci(SIHI
V6XHlD DS INeENO LDA O£Sl Hl
CPtll OS CMP IOI R/1St
~
mOlT os 9'1£ CO!'~lP
~
·;MISCElU.E(lJS /18fJRY USAGE LDA
O'tP
1M
[)£SILO
IOIR&255
llJPYLP
~
Ir..llEAo S!@98 Jt1p FllLUP
~
MI SSlS 0 flt'AREA~ J84
pt8 0 Ft¥IRfAi 512 ;
~
Pli 0 IWIREJ\+648 :t;:\I f.! pj(()(;Wtt STARTS r£RE
Pl1 0 FH:IR£l:H 768
~
Pl3 0 Pf4AREA· S9t,
OISP 0 13888 FllLlf LOA h ae ;11A< OFF ...
~ ·;SYS181 E(lJATES STA
STA
~tTl
~Tl
; rt'Il
;6iM<I CS
~
ST. CDLi' iBlAC~ PACKQ/Ll
iE, 0 <1Fe LOA 1114 ; llll£
C~SOl 0 ! !}@!f STA COlPF8 :COlORf!
~
~o 10<87 L~ ifC4 ; GREEN
I!It<O:J< 0 s 02~ STA COlPFl :COLORI
~
SETWJ 0
lE'se LDA n Ul
SI. (OLPFI
:WHITE
jCOlOR2
~
'ITVIIV 0 '[<Sf
CQ8K 0 <11:8 LOA 11134 ;REO
~
COLPF! 0 ' 2C4 SI. COLPF3 :COlOR3
CQPFI 0 ' 1(5 LDA ' TlTL0l.8155 jSETlf . . .
~
CDLPF2 0 12(:6 STA DLlSTl :TlTLE...
COlPf3 0 S2C? LOA IT ITlOUZ56 :O!SPlAl'., .
~
AUDCI 0 SOl S! STA OllSTltJ :UST .
AlOCI 0 S0283 LM 1t11E :fIRI 'l( .. .
~
AIIDC3 0 S0285 SlA ~C1l :rt'Il
AlOC' 0 to?l? LDA ' 3 :r~ (}I . •.
AUOFI 0 s0218 STA GRACTl :IiAAPKI CS
_2 0 JOlt1 J1P CKSTRT :"'IT FlJ1 START
~
AUDF3 0
<021'
A(,\)" 0 sOli6 START JSR 5E465 :INlT SOt.t<OS
~
AUDC1L 0 '1)2.8 LOA . 8 ;ClEAR WT
PRIlJ1 0 S4J26f lot ' 127 jALl H RO PA6£
~
ATTRAC = " D ClPG8 STA SS8,X :USER M8tlR'f
DMACIL 0 snF DE'
~
DllSTl = ' 238 8Pt CLPGtl
GAACTL 0 SoelO SlA SHORiF :SlOP SHORlS
tt1IEN 0 s D~8E STA SHORTF+I
~
CQFI'4l 0 S1C& SlA SHORTFt2
~
COLPMI =
CJJl.Pt12 0
'2el
S:?C2
)fA S!iORTFt3
L~ H:1 :PIH PRfMIT T
COll'!13 0 S2C2 STA P!l1lJ1
~
ff'lJSP8 0 ' DiIS LOA . 1 ' Dnn SH1)J
~
HPOSP! = s0881 STA SftXlfF ;F1..AYER ~ STAR
HPO'.R1 0 <01i2 :;TA Fillerl ;!JE STIll MUST
IfH CtR = SD@JE J 51! I'!1t.'1. R :ClEAR p/t1 AREA
~
PePf 0
' 08&4 LOA '64 :A'm SET UP THE
P1PL 0 S0880 STA STRHGT ;STAR 'S HE IGIfT
~
ST reI< 0 1278 LOA 1128 'A'.o
STRIG 0 $284 STA ST RHOR ; HlJ11Z00 At POS IT 1111
~
LOA tUDe :NlV In 's
OR!) s688 ~ :ASSEHBll ADVR . lOX ' 4 :ZERO (lJT
~
lOC 1[488 :ACTIj\[ IWRESS ZSClP STA SCOllN+~ . " :T~E SCORE
STA stlJI..!tHIS.X :AR£AS!
~
·:RElOC'AT
•
[ ~ IDISI< VERSllJllN.n
DE,
BPl ~SClP
LOX 15
~
ZSClP2 STA SCOlN?t12 .X
11IJ)£PiJ LOA 1It25 ;FlJ1 DISI{ ~<L I , DE;
~
STA HI :THIS SECIlll< aPL ~SCl P1
L~ " 14 :MIMS lHE LOA Ie ; 111£5£ lTEf1S
STA OESTHI :PROGRA"i TO STA FllLil'1 ,MUST BE SET
~
LDA . 8 : ITS Ilf'!I1ATlIffiL STA DEROFG : TO IEiO ~,
~
v
PAGE 180 THE A.N.A.L.O.G. COMPENDIUM VOL. 1 '-'
V
~
STA fO.'CHG ,STARTUP OR L!IA HI
STA HITCLR ,ELSE WE ' ll STA HIHLV
8TA CWlCTl :W!t() IjP WITH ASL LO '-'
STA tl1l9"4 :!'¥Isrr THWGS ROl HI :116
STA ft:tSD~ ,_EHIHG ' ASl LO '-'
STA HSHORT ROl III :*32
".iTA AUOCTl L!IA LO '-'
lOX" 15 :LEl 'S ZERO CLC
OiSLP STA
OEX
SCORE,X ,ruT THE SCORE
,COlMER" ,
_DC LOIfl.O
SM LO ""
BPL Q1SLP
STA LEVEL :t11O lE'J£l I '
L!IA HI
AOC HIHlO
""
~
LlI> 13 ,WE START WITH ".iTA HI jH8=148
STA lJtJ£S ,3 LIVES LOA IO !SP&155
ORA "98 :I'tl) PUT THe! IN eLC '-'
SfA seOW2H9 :THE SCORE LINE Aoe LO
LlI> ....
STA eOLPFIl
:NEXT WE S£l lP
; THE COLORS WE
STA lO
LOA IOlSP12S6
""
jl.iW TO USE. ADC HI '-'
LlI> lSI'
STA eOLPFI STA HI :tOISPLAY START
~
LlI> IS.. LlI> PLOT, jMSK "X POSITHJ'l
STA COLPF1 "'0 13 v
LlI> ISC' TAX
STA COLPF3 LlI> f'tOTX
LlI> IIQ LSR A '-'
SlA COLBk LSR A
LOA "76
STA COLFt11
eLC
Aoe LO ""
LlI> 1S3F STA LO v
STA COlPH2 LlI> HI v
STA COLFt13 ADC 119 :lO to: HI No.1 ItJI..D
LOA ttl34 STA HI : THE AOORESS '
SlA COLPI'il
LlI> lOll ST&155 :WE ' 0 BETTER TELL ,,
RTS :EXIT' ""
STA OlISll
LOA
STA
.OllST1256
Ol!STl+!
: Tff C!l1'UTER ~RE
JOUR DISPLAY LIST ,ClROSP
,CLEAR THE OISf'tA( M8tJf1Y
lOX .8 ,THIS ROJTINE WILL
""
'-'
;1 5 LOCATED !
LDY IItlTRPT&255 i TELL WHEIIE THE STX PLOTX ;CLEAR" Tiff SCREEN 1W1.
u
lOX IINTRPT/ 256 ;tJERT ICAl 81Jt1< LOX IS ; IT GETS THE ~ESS
LOA .6 :lmERIIUPT IS OlOOP2 STX PLOT'( :Of TlfE BEGltfHtm Of
JSR S£lV1IJ
LOA IP!1AREA/256
:;t{) SEl IT I
:HERE'S OUR PIN
JSR PUllet
LDX PLOTY
jUOi GR.? lit-(
:THEN 1ERoes OUT
""
SlA_SIO ;GRAPHI CS ARtA ' LlI> ISiS :EACH OF THE v
LlI> ISlE :TlM-I (J/ TilE LOY 139 :.8 BYlES (8-11> v
STA ~L ;twI CCtfTROl 01..0(1)3 STA (lO),Y ; tN THE Uti£.
LOA ttl3 ,"'I) DEy
~
SlA~ ,G_les COOROl ! BPl OLOOP3
LOA "48 ;m~8lE VBI 1NX
CPl< 186 v
$TA ~IEN
J!1P CL~OSP IIIE OlOOP2
F!1CtR LlI> 119 : '--'
:CLEAR ruT
LOX 1127 iTIff PIN AREA: ;~ THE m.OR t BOROER
~
Ft1ICLR STA MISSLS,X :MISSILES,
STA PU,X ;PLAYER 8, LlI> 13 ,THIS RruT!NE
~
STA PlI,X :PLAYER I, STA BO~(\I1 ,OIl>lS THE. LINES
STA PL2,X ;PLAYER 2 9OI!II£R l OX BORNLt\ :T"'T ""'E UP THi ~
STA PlJ.X ;1V'll PLAYER 3! LOA 8.:<STII1,j; ;WHITE GR .7 BmWER
DEl< STA f'tOTX :(fl THE SCREEH,
!fiE Ft1ICLR ,LOOP IMIL 00£ LDA Bl'S1RT ,:x '--'
RETIM-l IITS iIJE'R£ DillE' $TA PLOTY
LOA 8"XlNC,X '-'
:PlOT ADDRESS CAlCUlATOR STA BO!NO:
, LOA eYlNax '--'
:HUlTIPlY PlOTY BY 4B. TH£N CAlCl.lATE ADDRESS STA 801
:01= THE SCREEN MENOR'( TO 8£ ALTERED. LOA BORoo ,x '-'
STA IIOOlT
PLom LlI> PLon ORAWUH JSR PLOTCL '-'
ASLA LOA COlORI ,X
~
STA lO lDl' 110
LlI> IIQ ORA (LO),t
STA (LOI , Y V
STA HI ;12
ASL LO LlI> f'tOTX
ROL HI ; 14 cu: '--'
ASL LO AOC 80INCX
~
LlI> LO STA PLOTX
STA LOHLO LlI> f'tOTY
~
ROL HI :18 CLC
~
VOL . 1 THE A.N.A.L.O .G. COMPENDIUM PAGE 181
"", mt );
LIlA
X
CLC
AOC Sf ROT)( ,X
:PlJIYFIELO
jOBJECT . '-
CI1P
H(lJIX STA PLOT,
BEQJRXLP LOA SIR\. Y J
BCSENDR!) CLC
JRXlP .t1P REOXLP AOC STROTY ,,( v
STA PLOTT
~2-8YTE OECIWIl OJM:RTEI!. ct:tMRTS JSR PlO1CL v
jA 1-8'rTE BIt~I!Y NIJ18fR TO A 5-B'flE lOt Ii
:O£CI""- MItl£R . WILL Pi.l'a HE LOA BITSCN,X v
jOEClt;\L NIl18EII IN SCOLIN IF DESIREO /¥'40 (LO , I r :(tf'( COL lISI~ ?
i(SLLOC OETElt1mES POSiTlctD. SEQ WAleLR :1«) ALL a.EM' V
LOA '15 ,Hil SCI1ETHING,
b!JDEC LOX '4 STA BSOO :SlART Bltf' saND /W J
LIlA II lINE "EWOIR :GEI "EW DIREClIIll .
COlP STA OECI~,,( \oIAl'CLR LOA PlOTx :AOJUST STAR v
DEX CLC jCOOROlt¥llES
BPI. COlP AOC .44 jEIACK TO PIH V
LOX 14 SIA SIRHr.l jCOORtlIt~lES
Im\G LIlA HlWl< LIlA PlOTY :FR1l1 PtAYFIElD. ~
'-
~
VOl. 1 THE A.N.A.L.O.G. COMPENDIUM PAGE 18S
~
v
PAGE 166 THE A.N.A.L .O. G. CO MPENDIUM VOL. 1
-- O1P 111
1I'<E LOCL"
J1P QRC21
lOCLP4 JSR LOCPRV
l11P
BEO
BJTSCt4,'(
'IL lI I
OfP MIN'
BEQ 10000CP
srA PLOll
J3R PlulCl
lOl Ii
LOA SITSllf,'(
'-' .I1P etiCZT ;tl!) ( lO I , Y
- LOCAlE LOA
el C
ADC III
Fx RIS
NUU,llP LOA 11&
LOJi lie
SlA FX ill
l.l1P ItOO.
~IJUT INE
~
!hE SIOFX
,.
--
;'J81
LOO CURLO
CLC !NTRPT '. DA JC.Ef : [S SPACE f*lR
AOC StiAll 01f' tt2! ;IIRESSED'i
SIA UJ!lO 1I'<E IIlP'1OS ;NO, CK£Qc. FOR Pf:IUSE.
LOA CURHI LOA tiFf :ll lAR 001
~
AOC 106 STA kEY ;Jl.Ef CODE,
STA t:URHI LOA fAUSE :t:(IoIflLU1m1
LOA 118 EOR iliFF ;11£ ?Alb!:
~
SIA StTALY SIA PAUSE ; HAG.
LOO HU~ I#)PRE'; lOA ~ :ARE \tIE ?AJJS£O")
~
3lA Fx BEQ f{(l~US :rlO '
LOO 106 .tiP xll')fI,I :f'Ai;)EO ~ Imp
~
SlA C2 1ALY NUPq!.l:i LOA B30H :1101?€. Blr1 P ·;()~m'·
LOO ilia. (111 1m3 :NO. ~ROCiS5 f !i1E".
~
SIA AU"Cl O~A !tlt11i :Ni ). V1lU.f1E loll H!
LOO FILFRO JTA HlX1C4 :ru<E fI..t.!t
-
~
SIA I-lUDFl
8::0 t(f~OC
DEt: ~llFRQ
LOA !tid!
'iTA ~J'{)F~
DEC BSCN1
: SE I UP ii.t\r
;SOJIfJ ~R£oom.: l
i~O DECR91ENI COIJH.
trofFOC LOA F'1 N08S '.OA liNER . r ltO ~ fa ~ ::RO'l
~
CLe
~oc ill
BED IffiOE, :rEEk Olfi -, OECI!ENEtH.
OEC 'IHER ;OE' ~ tMUrT :!I'ER .
SIA Ft flODEL lVA ~H T iI!~
'-' Il1P litO BEO >IlOECI
BEl} Fl LENll OEt SIiTI NI
~
L)A FX 1I'<E 'IJO£CI
(I1P HIN!< OEC ~Hl ! H2
~
1I'<E SIOFX tMlOEC2 LOA F[Lllll jARE WE ciLlIt~l
PLA sell tIOF!Ll : ~lO. 00 RE31 OF VB!.
~
PIA .JtP XI!V9J ifB. EA!T 'lSI
JI1P CL~CZT tlOFllL LOA .8 :LlEAJ( OUT
'-' F[ LElIl ?LA ~rA DEAOFG 'OEAO FlAG
~
PIA
RlS
SIA HS+iORI ;;:m SHUR r Hll ,
L)A PIPl ;~ PLAtER 1
510' x LOO FX FllD "dt ;HIl . P\.A'fER 1J J"
Sf A PlOI> SEO loms :Na, IT'S ~
LOA Fl INC HSHORl ilES ' ~ .
~
Sf A PlOTY t(IH IT3 U)A ~!~ l ,..., PLAfE~ I
JSR PlOl Cl /VID h al :HI I P~IEII 8"
~
lOY .9 8£12 tQf/TP :Na!
LOA BIlS~:" tNt. D~!lFt.i : fESt t,
~ (lO>,1
~
oJ
~
PAGE 188 TH E A. N.A.L.O.G. COMPE N DI U M VOL,l
'oJ
OiP '7 :ALlllrl ellr ~ -6. lOY SHrlfLO,," ;BfT LAST INDEX
~lE SlO51P ;RO! , eOltH OK LOX .4 iN[l.I ERASE ~
v-
'-' PAG E 189
VOL. 1 THE A.N.A.L.O.G. COMPEND IUM
'-'
'-' 08 I n . 178 ,'38 ,'46 STRlJ( 08 8
III STI1SG STRlY 08 i
'-'
v
08
III
" I
TITlOl
lJ1POIR
SlROIR
S'lROTX
08
08
08
,
8
1, I ,8.155, 255,2S5,~ ~l
~
SCotl" 08
08
C'l ,Q;t ,COlI. ~ ,8 ,I ,8,8,8
8,ee, u1e"ee jl,I ,!tI6:
SJRDTY DB 1,1,1,8,1,255,255,25
STRSP{} DB 4
SWJ1208 Cl ,CV ,e (1.,8,1, ,eli ' COlORI D8 S4l,'U , SB~,S81
~
D8 eRf ·eelll6: '1.i .I,CI' j'" COlII!2 08 s88 ,129 ,SlS,se2
v 00116 08 8. b8~ , 8 . ,CA.01 •• eDlDil 08 SCI ,t lf ,tee I '13
D8 I ,e j ,e~eR . I .I, I.i~ 811Slt1 08 SCj,SlI,S8C,U3
IM1$ 08 8,ll21)" . '21~2C1'. ,127 SHOFF DB S3F ,ICF,SF3.1FC
~
D8 • s 3 s f ' 20 S .t 5 exSTI!T 08 8,158.158,8
08 ,k.29 .•lE .• 27.a.! B'fSTRT DB '.B ,~ B4
~
TiTlE DB • II ,8 .,Uo,t69 ,S6C ,UC.s47 exiNe 08 1.8. I'
08 ~.I 2, 8,'75.'78 ,14 1. 8 8YINC 08 8 1,1 2 5
~
DB 169,S61A,.8,8 BOROn OB 1\9 .85 . 159 .85
AUTOOl 08 ~8,8. 2,189,8.8,184 BO~I~ OB I
~
08 f .SAO II ,tAB, IBS. iA4,'B3,SAF 801NCl< 08 a
08 SAE ,8,~ ,~ BDINey DB 8
~
STI1SG 08 8~a,8 ,IJ, SF8, SF STI1SG 08 8.9 .8.9,SF8,SF1,S£5.SF3 80CIIT 08 i
DB s 3.1,I,SI=J .' F4 .SE I,SF2,SJ:4 P-XWC 08 i
v p,we 08 8
08 0,8,8.8
SHOOFF 08 8
~
.;lMl TAIilES cxx 08 3
C,Y 08 8
v .N[.< 08 i
-
iG'flO 08 64 16 224 48 I!48 2l2 · 16 ., lNIl 08 i
v
v
TGTIU 08
DB J 1 24 18, 168 !112.212
24 8~~4.11,
31, ,46.35 ,42, 48 ,31 ,41,42
MHD: 08 8
MIN'!' DB
08 8
,
DB 4648,4647,47 48.48
~
STARS!' 08 4,A ,4 .3,3.3,2, ~ ,2,2 ,2, I ,I ",-" DB 8
08 1.1 , 1 REX 08 8
~
KlllFG 08
D8
a,. , I •• ,1 ,1 ,a.l ,1 ,1 ,I ,Q,'
1.1 , 1
Rn
X
Y
D9
08 8
DB 8
•
SHTIIf 08 7,7, 7,6,6,6 ,5 ,5.5 ,4,4,4,3
'-' 08 J,2,1 sx 08 8
SHSTRT 08 9.1 08 8
,,,
v S'
SHtHlD OS 2 TX 08 8
~
SI«lI It; 08 188,ISQ ,128 ,Ise ••as n 08
DB f2. ,121, t Fa .' 28 .'21 FX DB
CPYSlII 08 4, 9 08
~
1l'l00 DB
01R>: 011
tFF .2,!
8,l.a,tFF
"
TO
0
DB 8
08 i
~
OIRY DB "~f 1',1,8 BSOO 08 8
SHORr, os 4 FIlFRO DB 8
v SHORT'r OS 4 TR! ES 08 8
SHORTF os 4 fIll~' 08 8
'-' SHORTO OS 4 e/TAU 08 8
NOW1{j DB 8
v ZEROI 08 B DEOBRT 08 i
StORE DB 8,1,8.',',8 STKHlO DB 8
v ~,l OC 08 8
CURlO DB 8
RORca. 08 8
RED1R 08 ,
v CiIlHI oe a
lEVEL DB , ll3TlfY 08 8
IIHES 08 i
~
~
~ 08 8
ft:ISD~j DB 8
l(J,ll( 08 8
C!<V
el<Vx 08
~GOB 8
08 8 ,
HJt.I~ De 8 NWI ;< 08 i
~
SCTAlI 08 a XO 'lB 8,e.8,8
lJ'JES DB 8 08 8,8.e,1
~
; 09 8.8.6 . .?55
;STAR P\.A'ER-!1ISSllE II"GES DB 8 ,1,1,8
~
yo 08 8,8,8,8
hARBI 08 181 ,148 ,129 ,t I8.t&8 ,584 ,iel DB 8 ,8, '.8
v STAR91 DB 142,t43,128, t1 8,'Ii8,' 84 ,t C2 OS 8.8.1 8
v
STARB3 08 82 4.824 ,813, 8 11"'B.SC8. '2~ 1
08 8,:.25\8
STAR84 DB tlB.tI B,tl C. 'I F, 'IF8.tJ8;tl8 5)(0 08 '5 1,8 ,2 5
STARB5 08 S18, tl8.13S, SF B.tl F, SI C, SIS S~ D DB 2 ~ . 8, 1.8
v SlAR86 DB '24, S24.'Ica .US,t l' ,sl3, S24 OW~ 08 ~,8 , 8,8,B
STARS7 DB S42,SC2,I84 ,tI8.S18, S29,S43 IEI02 08 0
v STAR8B D8 HI""lS 08 8",8 3.39
' 81 ,S82,s84 ,.. ta,s II, ' 20,.48
SlARCT OB 8 WJAlS 08 1. 1 , 1tIl ,2Jl,16
v SlRPOS 08 OIR OS 25, .
8
~
SlRHG'f 08
Sl RHOR DB ,8 LO IH OS 256
END ' 6888
~
J
v
~
v
C/)
W
I-
>
m
.,m
LI)
M ,
C/)
II:
o
...I
•
o "
.,
()
••
-
•
~
C/)
W
I-
>
m
LI)
N
o
N ,
C/)
II:
o
...I
o
()
N ••
~
CD o
•
Q)
•
'0 "
o
:E •
N
tn
.-
(.)
.c
•
c.
...CU •
•
CJ
•
• • • •
N •
"
•• •• ••
«(((((((((((((((((((((((((((((C((((((((((((
o IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
5 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
10 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
15 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
20 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
23 LI~~~~-L~~~-L-L~~~-L-L~~~-LJ-~~-L-L~~~-LJ-~~~~
NOTE: Graphics Mode 0 is a text mode full-screen display only.
Notes
v
J
v
v
v
J
v
v
J
J
J
J
J
v
V
.J
J
I
I Get All A.NAL.O.G. Compendium
I
I Programs on Disk!
I
I Special Offer for Compendium Owners Only.
v I
v I Only $35.00 per set ( 3 Disks)
I
1 Yes! Send Disk set(s) which contains 0/1 the
i programs in the ANAL.C.G. Compendium to:
I~::~
v
i State Zip I
v
II 0 MasterCard
Account No
0 Payment Enclosed 0 VISA
Expire s , _ __
v I ___ _ __ __ ...i~ign~rde~od~5.00....!or Air Ma'!!"'postoge. ____________ _
V
v
i Yes, Please enter my subscription to:
[5=I~i~pEiI '"~:~~¥.~2'2_
v
v
v
!
THE I 0 1 year ........... (12 i~ues) $28 Additional Postage per yea,
~MAGA 71NE FOR I 0 2 years .. . ....... (24 issues) $52 Canada & Mexico $8 Surtace. $12 Air
........ r-v.... 0 3 years .. . .. ..... (36 issues) $79 Other Foreign $12 Surface. $48 Air
ATARI I
~ COMPUTER : Nome
,
Address _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __
v OWNERS I
I City Stote _ _ Zip _ __
I
I
I o Check# _ __ DM.O.# _ __ o VISA 0 Me 0 Bill me
v I Card # _ _ _ _ _ _ _ _ _ __ Exp. Date---l---l__
v I
I Your subscrip tion will begin w ith the fi rst available Issue. Please a llOw 4-6 weekS for deliVery o f fi rst issue.
v I- - - - - - - - - - - - - - SUBSCRIBE TO ---------------
V
V
: ANALOG COMPUTING
V : ON TAPE OR DISK
I Includes magazine with tape or disk
I Cassette ........ O !h year ........ . . (6 issues) $48
v I 0 Full year ...... . . ( 12 issues) $90
V
I Disk ........... . . 0 "h year .......... (6 issues) $72
o Full year ........ (12 issues) $130
\..I I
v I Name ____________________________________
I
v I Address
I City _ _ _ _ _ _ _ __ State _ _ Zip _ __
I
I
I o Check H' _ __ DM.O. H_ __ o VISA 0 MC 0 Bill me
I Card H _ _ __ _ __ _ _ __ Exp. Date ---1---1__
I
fOREIGN ORDERS ADO AOOrTIONAL $20 TO EACH 6·ISSUE SUBSCRIPTION .
I
I v
PVTSTAMPHEFIE I v
THE POST OFFICE
WIlL NOT DEU\lEA I
""-wm«lUT
I
""""" I
I
I v
I
I U
I
I
o
COMPUTING
I
PO. Box 23 I
I v
Worcester, MA 01603 I
I U
I J
I
_______ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1 v
I V
PUTSTAMPHERE
I U
THE POST OFFICE I
WIlLHOTOEUVEA
...... """"'" I
""""" I
I
I v
I V
I V
I
I J
COMPUTING I
I
P.O. Box 615 I v
Holmes, PA 19043 I I,.)
I J
I
I v
____________________________________ J I v
'-'
-
'-'
PUTSTAMPHEPIIE
TIE POST OFFICE
v
WIlL NOT D£UVER
...... wm«lUT
""""" v
J
&=I~&=I~EJE;
_ _ _ COM PUTI NG"___
J
v