Skip to main content

Full text of "MACE Journal v5 n6 July 1985"

See other formats


$ 1.50 


JULY, 1985 
V0L.5 NO.e 


H VUL.O NU.D 

M.A.C.E. Journal 

"Devoted Exclusively To The Atari Computer User" 


IN THIS ISSUE... 















ATARI LOGO WM 


NEWS FROM CE5 



SOFTWARE REVIEWS 
MACE BIRTHDAY PARTY 
BO-COLUMN BOARD REVIEW 
DATAMATE - data storage in strings 



Published by the Michigan Atari Computer Enthusiasts 











Ok folks, get ready, here come the corrections 
to last month's column! 

Dave Duberman from Atari finally agreed to 
come to the birthday party two days after the 
Journal went to the printer! It was nice to 
see that ST's really do exist! We all had a 
great time, Dave had a great time, and I would 
like to thank Dave and the powers that be at 
Atari for his attending! 

Dave called again two days after the meeting 
and told me that we could take members' 
orders for the ST now! The only catch was it 
had to be done before this meeting. Gee, talk 
about a rush job. If you did get one, good luck! 
If not, fear not! ST's should be in the stores 
in about a month for the same price so there is 
not a big savings advantage. If you decided to 
wait, you may be better off! Just think, the 
pioneers out there will have to deal directly 
with Atari if something goes wrong. You'll 
have a local store to go back to! I hope with 
Atari's decision to sell ST's to user group 
members a real improvement in consumer 
relations is included. 


case anymore. The price difference between 
what the club could get them for now as 
opposed to Rite-Way, Just Software, etc, just 
isn't worth it, We're only talking about a 
*10.00 savings now. And besides, remember 
all those great door prizes we had at the 
birthday party. 

Till next month! 


Kirk 


* A * A # A * A * A * A # A * A * A # / '# A # 


COMING 

ATTRACTIONS 

July 16th 

MACE Library Disk Demos 
SynCalc Demo - Paul Glass 
MACE Awards Night 

August 20th 

MACE Swap Night 
(contact Scott Garland for table 
reservations - members only!) 

September 17th 


What this all comes down to is this! MACE 
members were able to buy ST's because they 
belong to the dub. The club placed a bulk 
order on behalf of its members. MACE is not 
responsible for the product you receive. You 
will have to deal directly with Atari should 
problems arise. 

Movin' on, I didn't ramble in last month's hall 
of fame because I am not yet a Past President. 
But, I must say, I really have enjoyed it! 'Tis 
a great group we have here and I've made lots 
of new friends. My biggest goal was to bring a 
feeling of togetherness back to the group and, 
my gosh, I think it's working! I've only got 
two meetings left after this one (maybe, 
depending on September's election), but I have 
thoroughly enjoyed it! 

In answer to a few questions concerning future 
Indus group purchases, I don't plan on it at 
this time, The original purchases offered a 
noticable savings to members. That is not the 


Election of Officers 

# A # A * A # A * A * A * A # A * A # A # A * 

The MACE Journal is published monthly by the 
Michigan Atari Computer Enthusiasts. Unless 
otherwise noted, material published in the 
Journal is in the public domain and may be 
reproduced for private or user group use 
providing proper credit is given. 

Submissions to the Journal can be mailed to 
the PO Box, uploaded to the MACE BBSs, any 
officer's BBS, or uploaded directly to the 
editor at 646-4455. Where possible, 
submissions should include a disk or tape file 
in AtariWriter or similar format and a working 
copy of the program. Specify format for screen 
dumps (AtariArtist, Koalapad, etc,). Authors 
whose submissions are published will receive 
a certificate good for a free disk or tape from 
the MACE library. Deadline for submissions 
is the first of each month. 















ID AT AMATE* 
Data Storage in Strings 

by Ann McBain Ezzell 


The Atari's character set has* with one 
exception, a printable character for every 
integer from 0 to 255. (The exception is 155, 
which corresponds to a carriage return.) This 
accounts for those funny-looking listings you 
sometimes see, with lines like* 

100 A$="#$%&" 

This may look like something out of a comic 
strip, but it is actually a compact 
representation of the numbers from 35 to 38. 
DATAMATE will create such a string for you 
from your data, then write string assignment 
statements like line 100 above and save them 
to disk or cassette for inclusion in another 
program. By taking advantage of the Atari's 
method of keeping track of variables, you can 
even put your data string into a specified 
location in memory. 

Using strings to store data has the benefit of 
taking up less memory than the DATA 
statement method, as well as requiring less 
time than repetitive PEEKing and POKEing. 
Some of the more obvious applications include 
handling redefined character sets, machine 
language subroutines, player/missile graphics 
data, and custom display lists. You may be 
able to find other uses for the strings created 
by DATAMATE, but remember that only integer 
values from 0 to 255 can be stored in this way. 


APPLICATIONS 

The simplest use of DATAMATE is for loading 
machine language routines into a BASIC 
program. If you have a relocatable routine, 
make a string from it with DATAMATE and call 
it using* 

100 X=USR(ADR(ML$)) 

You can of course also pass any needed 
parameters in the USR call. Non-relocatable 
routines can be stored with DATAMATE and 
POKEd into their proper locations* 


100 FOR 1=1 TO LEN(ML$) 

110 POKE 1535+1,ASC(ML*(I» 

120 NEXT I 
130 X=USR(1536) 

This would put your routine into page six. 

Some of the other uses of DATAMATE require 
some knowledge of how the Atari stores and 
handles strings and other variables. As the 
Atari encounters each new variable, either as 
program lines are typed on the keyboard or 
ENTERed in from disk or cassette, the name is 
stored in the variable name table and eight 
bytes are allocated in the variable value table. 
Locations 130 and 131 hold the address of the 
beginning of the variable name table 
(FEEK(130) + 256*PEEK(131) will give you the 
VNT address)! 134 and 135 hold the address of 
the variable value table (VVT). 

Your Atari uses three types of variables, 
scalar (simple numeric values), array, and 
string. Each type of variable uses its eight 
bytes in the VVT in a different way! here we 
are only concerned with string variables. The 
first byte indicates the type of variable. 129 
and 128 respectively indicate dimensioned and 
undimensioned strings. Byte 2 shows the 
variable number, from 0 to 127. The third and 
fourth bytes combine (low byte/high byte) to 
tell you the location of the string in terms of 
its offset from the string and array table, 
which starts at the end of the BASIC program. 
(Locations 140 and 141, labelled STARP, hold 
the address of this table.) Bytes 5 and t> hold 
the actual length of the string and the last 
two bytes hold its dimensioned length. 

The structure of the variable value table gives 
you the power to manipulate strings for 
special uses. You can force a string to a 
chosen location and specify its actual and 
dimensioned lengths. You have to know how 
far into the table the eight bytes for your 
string are, so the easiest thing is to make 
your string the first variable in the table. 
You can do this by having that string be the 
first variable of any type referenced in your 
program. If you have been working on a 
program for a while, put in a line dimensioning 
your string before any other variables are 
mentioned, LIST the program to disk or 
cassette, type NEW, and reENTER the 




program. Variables will be entered into the 
VNT and VVT in the order in which they appear 
within the program. (When you SAVE a 
program, the VNT and VVT are saved along 
with the tokenized program. LISTing saves 
only the program itself, in untokenized form.) 

Listing 2 shows one way of setting up a string 
in memory to hold a redefined character set. 
The full character set for the Atari takes up 
1024 bytes of memory - 128 characters times 8 
bytes per character. I will assume that you 
have generated the data to define a new 
character set and have used DATAMATE to 
create a string called DAT$ to hold the data. 
Now you need a safe place to store your data 
and some way to put it there. 

Line 100 dimensions DAT$, making it the first 
entry in the variable table. Since you will be 
moving DAT$ and setting aside IK of memory 
for it elsewhere, you can dimension it to one 
byte initially and not waste space in the 
string and array table. 

One reasonably safe location for your new 
character set is above what your Atari thinks 
is the top of memory. Location 106, RAMTOP, 
holds the number of pages (1 page = 256 bytes) 
of available memory. You can change the value 
in RAMTOP and your Atari will more or less 
leave the area above it alone. You do have to 
be careful, though, because certain actions 
will disturb some of the memory above 
RAMTOP. Issuing a GRAPHICS or "CLEAR 
SCREEN" (PRINT CHR$(125)) command will 
clear out the first 64 bytes above RAMTOP. 
Scrolling the text window wipes out up to 800 
bytes. It is best to leave a buffer zone unless 
you are certain that your program will not do 
anything to interfere with the area above 
RAMTOP. 

Full character sets must start on a IK 
boundary (i.e., an address evenly divisible by 
1024, or a page number divisible by 4). Half 
sets, like those used in GR.l and GR.2, can 
start on a 1/2 K boundary. Since this example 
deals with a full character set, line 110 moves 
RAMTOP down by eight pages (four pages for 
the character set plus a four page safety 
zone). This puts the start of the character set 
on a IK boundary. 


Lines 120 and 130 define VT and AT as the 
addresses of the variable value table and the 
string and array table. Line 140 sets OS equal 
to the offset between the start of the 
character set (remember that it is four pages 
above the new RAMTOP) and the string and 
array table. The value of OS is broken down 
into a high byte and a low byte in line 150. 

Next, the new values are POKEd into the 
variable table. You do not want to change the 
first two bytes in the table. The third and 
fourth bytes receive the offset for the 
string's new location, the next two the new 
actual length (0 + 256*4 = 1024), and the last 
two get the new dimensioned length. If you 
were writing your own program, you would now 
be ready to put in the string assignment 
statements. (Remember? That's what 
DATAMATE is for.) 

In this example, just to prove to you that this 
really does work, I have filled DAT$ with A's, 
which should put 65's into 1024 bytes starting 
four pages above the new RAMTOP. (65 is the 
ATASCII value of "A".) Line 200 looks into 
this area of memory and prints out the 
contents for you. 

After changing RAMTOP, you must execute a 
graphics command so that the display list and 
screen memory area will be moved below the 
new RAMTOP. If you are using this technique 
to set up a new character set, you will have to 
POKE 756 with the page number of your 
character set, so that ANTIC will fetch the 
character data from there instead of the 
normal ROM character set. 

Now you know how to put a string where you 
want it to be. You will find that this method 
is much faster than looping through DATA 
statements and POKEing each number into its 
target location. You can also use this string 
manipulation technique to set up an area for 
player/missile graphics, with a large blank 
string encompassing the PMG area and small 
strings which hold your player data moving 
around as substrings within the larger one. 
Nan-relocatable machine language routines can 
be written to reside above a lowered RAMTOP 
or some other "safe" area and handled in the 
same way. You could also store a custom 
display list in a string and force it to its 






proper location. Unfortunately, you cannot 
place strings in page 6 with this method, 
because the offset from the string and array 
table would have a negative value. 

If you need to specify the location of more 
than one string, dimension the strings you 
need at the beginning of your program and 
treat each one as in Listing 2. Remember that 
you will use VT+10 through VT+15 for the 
second string, VT+18 through VT+23 for the 
third, and so on. 


USING DATAMATE 

Type in Listing 1 and SAVE it. If you want to 
use DATAMATE to make strings from DATA 
statements in existing programs, you should 
also store it using the LIST command so that 
you can merge it with your program. To make 
strings from a binary file or from keyboard 
entries, RUN DATAMATE and follow the 
screen directions. To make strings from DATA 
statements, load your "host" program, make 
sure that there are no lines that will overlap 
with DATAMATE, ENTER DATAMATE, and 
GOTO 30000. You will need to know at what 
line to start reading the data and how many 
items to read. 

Your first choice when using DATAMATE will 
be the method of data entry* DATA 
statements, binary file, or keyboard entry. If 
you choose the keyboard, you may use decimal 
or hexadecimal format, Next you must specify 
the name of the string which will hold your 
data. Remember that only upper-case letters 
and numbers are allowed in string names, and 
that the first character must be a letter. 
DATAMATE limits your string names to 10 
characters in length. You can include the "$" 
character at the end or not, as you wish. 

If you want to read the instructions, press 
"Y"» otherwise press "N" to continue. 
Depending on the method you choose, you will 
have to answer certain questions about your 
data. For DATA statements, give the line 
number of the first DATA statement and the 
number of items. The binary file method will 
ask you for a filename! be sure to specify the 
device (cassette or disk drive 1). For entry 
from the keyboard, you must give the number 


of items. With all methods, DATAMATE will 
then ask for the line number to begin string 
storage and the line number increment to use. 
Be sure to choose values that will not 
overwrite line 30000, the beginning of 
DATAMATE. 

You will have a chance to correct your entries, 
then the program will begin getting the data. 
The first two methods proceed on their own! 
for the third you must enter items from the 
keyboard one at a time. Use two characters 
for every hexadecimal entry. When you have 
entered the specified number of items, you 
will have a chance to correct any mistakes you 
may have noticed. You can choose to reenter 
all of the data or only selected items. 

Once all the data has been converted to string 
form, the program will write string assignment 
statements. The screen will go blank during 
this part of the program to speed it up. If the 
screen is blank for more than a short time, the 
internal speaker will click occasionally to 
assure you that your computer has not gone to 
sleep. The display will return and you can see 
the newly written lines. DATAMATE can LIST 
the lines to cassette or disk so that they can 
be ENTERed into your program as needed, 


SPECIAL PROGRAM TECHNIQUES 

As I mentioned above, the Atari has no 
printing character which corresponds to the 
number 155. DATAMATE will note and replace 
any values of 155 in your data in such a way 
that the actual value will be put back before 
the data is used. Another data value which 
can cause trouble is 34, which prints out as 
quotes (“). Since quotation marks are used as 
string delimiters, trying to include them as 
part of a string will cause an error. Values of 
34 are also replaced with dummy values. 
DATAMATE takes care of this is in a 
subroutine starting at line 31000. 

Each time that a value of 34 or 155 is found in 
the data, FLAG34 or FLAG 155 is incremented, 
This not only notes that one of those values 
has been found, it determines the dimension of 
the array used to hold its location in the 
string. (Two elements are needed for each 
entry in the array to allow for string indices 


greater than 255.) The routine starting at line 
31000 dimensions the arrays HOLD34 and 
HOLD155 as needed, then replaces the 34's 
and 155's with dummy values and fills the 
arrays with the locations of the replaced 
characters. Lines 30400-30595 write program 
lines to put the correct values back into the 
string like this} 

100 DAT*<2,2) = CHR$(34). DAT$<45,45> = 
CHR$(34) 


The new program lines are all written using 
Atari's “forced read" mode, which acts as if 
the RETURN key were being pushed 
continually. See lines 30310-30330 for an 
example. Location 342 holds auxiliary byte 
number one (AUX1) for I/O Control Block 
(IOCB) zero. IOCB zero is normally used for 
the screen editor (E!). A value of 13 FOKEd 
into 842 sets the screen up for input as well 
as output. 

If you want to use the "forced read" mode in 
your own programs, clear the screen and 
position the cursor at least four lines down 
from the top. Print whatever program lines 
you want to be entered, then print "CONT" (for 
continue). Position the cursor at the top of 
the screen. POKE 842.13 and STOP the 
program. The "forced read" mode will go into 
effect and read down the screen, entering each 
line as if typed in from the keyboard, until it 
reaches the CONT command. It will then 
continue the program starting with the first 
statement on the physical program line 
following the line where the STOP command 
was. POKE 842,12 to get back to the regular 
screen editor mode (keyboard input/screen 
output) and repeat as many times as 
necessary. The process is interesting, if 
rather dizzying, to watch, but will happen 
about 30% faster if you turn off ANTIC (POKE 
559,0) while it is happening. POKE 559,34 to 
turn the screen back on. 


PROGRAM OUTLINE 
30000-30285 

Initial screens to determine method of DATA 
entry and provide instructions 


30290-30640 

Write string assignment statements and enter 
them using Atari "forced read" mode 

30700-30780 

Save new lines to disk drive 1 or cassette 
31000-31040 

Replace values of 34 and 155 with dummy 
values and place location of dummy values into 
arrays for later reinsertion of actual values 

31100-31180 

Read values from DATA statements and 
convert to string form 

31200-31290 

Read values from binary file and convert to 
string form 

31300-31495 

Input values from keyboard and convert to 
string form 

31360-31390 

Correct values in string from keyboard entry 
31400-31410 

Subroutine for decimal entries from keyboard 
31420-31435 

Subroutine for hexadecimal entries from 
keyboard 

31500-31550 
Error handling 

31600 

Get single value from keyboard 
31700-31740 

Get information for string assignment 
statements 

31300-31850 

Check validity of filename 


I think that you will be able to find many uses 
for DATAMATE, both with programs you write 
yourself and those you find in magazines (they 
are notorious for using DATA statements 
instead of strings). Good luck, and enjoy the 
program. 







30000 REM DATAMATE Listing 1 

30010 CLR :DIM BF$(14),D*(3),NAME$(11) 

:POKE 710,146 

30015 ? "{CLEAR](DOWN)(TAB)(TAB)DATAMA 
TE":? "IDOWNlCreate a string -from:":? 
“(DOWN]{TAB}1) DATA statements":? "{DO 
WNJCTABJ2) Binary file" 

30020 ? "{DOWN){TAB>3) Keyboard entry" 
:? "{DOWN}Select desired method of inp 
at:“;:OPEN 01,4,0,"K:“ 

30025 GET 01,M:IF M<49 OR M>51 THEN 30 
025 

30030 M=M-48:? CHR$(M+176); 

30035 METH0D®31000+100*M:IF M<>3 THEN 
CLOSE 01:GOTO 30055 

30040 ? :? "{DOWN}{DOWN}Entries in (1) 
Decimal":? "{DOWN}{TAB}{TAB}{LEFT}{LE 
FT}(2) Hex{TAB}"; 

30045 GET 01,NUM:IF NUM<49 OR NUM>50 T 
HEN 30045 

30050 CLOSE 01:NUM=NUM-49:? CHR*(NUM+1 

77) 

30055 ? :? :? “Name of string (up to 1 
0 characters)* 

30060 INPUT NAMES:IF LEN(NAMES)*0 THEN 
? “CUP}";:GOTO 30060 

30065 IF ASC(NAMES)<65 OR ASC(NAMES)>9 
0 THEN ? :? "fBELL1 FIRST CHARACTER MU S 
T BE UPPER-CASE A-Z ":? "CUP}CUP}”;:GOT 
0 30055 

30070 L=LEN(NAMES):IF ASC(NAMES(L))=36 
THEN L=L-1:STRFLAG=1:REM S last chara 
cter 

30075 FOR 1=1 TO L:A=ASC(NAMES(I)) 

30080 IF A<48 OR (A>57 AND A<65) OR A> 
90 THEN ? :? "{BELL} ONLY A-Z AND 0-9 A 
LLQWED IN NAMES ";‘.GOTO 30055 
30085 NEXT I:IF NOT STRFLAG THEN NAME 
S(L+l)="S" 

30087 POKE 752,1:? :? :? " DO YOU WAN 
T INSTRUCTIONS? (Y/N) "; 

30090 GOSUB 31600:IF A<>89 AND A<>78 T 
HEN 30090 

30095 IF A=7S THEN 30285 
30100 ? "{CLEAR}{DOWN}DATAMATE will cr 
eate a string for data";:? "storage fr 
am DATA statements, binary" 

30110 ? "files, or keyboard entries in 
decimal":? "or hexadecimal format. 0 
NLY integer" 

30120 ? "values from 0 to 255 are alio 
wed.":? :? "When choosing a name for y 
our string," 

30130 ? "avoid using BASIC keywords. 


You may":? "use a name of up to 10 cha 
racters.":? 

30140 ? "The starting line number for 
string":? "storage must be chosen so t 
hat the" 

30150 ? "new lines will not overwrite 
the":? "beginning of this program at 1 
ine" 

30160 ? "30000. Also be sure not to c 
hoose":? "line numbers that will inclu 
de lines" 

30170 ? "already present if you are re 
ading":? "from DATA statements in a pr 
ogram.“ 

30180 ? :? "Use only D: or C: as devic 
e names.":? "{DOWN}{TAB} PRESS ANY KEY, 
TD CONTINUE ";:POKE 764,255:G0SUB 31600 
30190 ? "{CLEAR}{DOWN}If you have any 
values of 34 or 155":? "in your data, 
this program will" 

30200 ? "replace them with dummy value 
s and":? "write assignment statements 
to put" 

30210 ? "the correct values back into 
the":? "string when it is used." 

30220 ? :? "This is necessary because 
CHR*<34)":? "is quotes (";CHR$(34);"), 
which will cause an" 

30230 ? "error when encountered in the 
middle":? "of a string.":? :? "CHR$(1 
55) is a carriage return," 

30240 ? "which will not print properly 
.":? :? "If vou want to print out your 
string," 

30250 ? "you may have to POKE 766,1 so 
that":? "any non-printing characters 
like":POKE 766,1 

30260 ? "{UP} and (DOWN) will print pr 
operly.“:? "POKE 766,0 to return to no 
rmal mode.“:P0KE 766,0 
30280 ? "fnnWN} {TAB} PRESS ANY KEY TO C 
ONTTNUE";:POKE 764,255:G0SUB 31600 
30285 POKE 752,0:6OSUB METHOD:SUBSTRS= 
INT(STRLEN/80) 

30290 REM write string assignment stat 
ements 

30295 ? "{CLEAR}{DOWN}The screen will 
go blank briefly":? "while the string 
assignment statements":? "{UPlare bein 
g written." 

30300 ? "fnnWN>{DOWN}{TAB} PRESS ANY KE 
Y TO CONTINUE " : GOSUB 31600:TRAP 31500: 
POKE 559,0:IF FLAG34 OR FLAG155 THEN G 
OSUB 31000 


—~7 — 














30305 ELN=SLN:IF SUBSTRS=0 THEN 1=0:60 
TO 30335 

30310 FOR 1=0 TO SUBSTRS-1:? "{CLEAR}{ 
DOWN}{DOWN}CDOWN}{DOWN}":POKE 766,1:PO 
KE 53279,0 

30320 ? ELN;" NAMES;1*80+1I 
*80+80; ")=";CHR*(34);DAT*(I*80+1,1*80+ 
80):POKE 766,0:? "CONT" 

30325 POSITION 2,0:POKE 842,13:STOP 
30330 POKE 842,12:ELN=ELN+LNINC:NEXT I 
30332 IF SUBSTRS*80=LEN(DAT*) THEN 303 
60 

30335 ? "{CLEAR}{DOWN}{DOWN}{DOWN}{DOW 
N} " 

30340 POKE 766,1:? ELN;" ";NAME*;"(";I 
*80+1;")=";CHR*(34);DAT*(1*80+1):POKE 
766,0:? "CONT" 

30345 POSITION 2,0:POKE 842,13:ST0P 
3035O POKE 842,12:ELN=ELN+LNINC 
30360 IF FLAG34=0 AND FLAG 155=0 THEN 3 
0600 

30400 REM write lines to correct chang 
es Tor values o-f 34 and 155 
30410 IF FLA634=0 THEN 30510 
30415 LINES=INT(FLA634/3):IF LINES=0 T 
HEN J34=1:60T0 30480 

30420 FOR J34=0 TO LINES-1:? "{CLEAR}{ 
DOWN}{DOWN}{DOWN}{DOWN}":POKE 53279,0 
30425 ? ELN; :FOR K34=J34*6+.l TO J34*6+ 
6 STEP 2:IT=H0LD34(K34)+256*H0LD34(K34 
+ 1 ) 

30427 ? NAME*; " ("; IT;",";IT;")=CHR*(34 
):;NEXT K34:? "{BACK S}":? "CONT" 
30430 POSITION 2,0:POKE 842,13:ST0P 
30435 POKE 842,12:ELN=ELN+LNINC:NEXT J 
34:J34=6*LINES+1 

30440 IF LINES*3=FLAG34 THEN 30500 
30480 ? "{CLEAR}{DOWN}{DOWN}{DOWN}{DOW 
N}“:POKE 53279,0 

30485 ? ELN;:FOR K34=J34 TO FLAG34*2 S 
TEP 2:IT=H0LD34(K34)+256*H0LD34(K34+1) 
30487 ? NAME*;"(";IT;","; IT; ")=CHR*(34 
):";:NEXT K34:? "{BACK S}":? "CONT" 
30490 POSITION 2,0:POKE 842,13:ST0P 
30495 POKE 842,12:ELN=ELN+LNINC 
30500 IF FLAG155=0 THEN 30600 
30510 LINES=INT(FLAG155/3):IF LINES=0 
THEN J55=l:GOTO 30580 
30520 FOR J55=0 TO LINES-1:? " {CLEAR} { 
DOWN}{DOWN}{DOWN}{DOWN}":POKE 53279,0 
30525 ? ELN;:FGR K55=J55*6+1 TO J55*6+ 
6 STEP 2:IT=H0LD155(K55)+256*H0LD155 (K 
55+1) 

30527 ? NAME*;“(";IT;IT;")=CHR*(15 


5):";:NEXT K55:? "{BACK SI":? "CONT" 
30530 POSITION 2,0:POKE 842,13:ST0P 
30535 POKE 842,12;ELN=ELN+LNINC:NEXT J 
55:J55=6*LINES+1 

30540 IF LINES*3=FLAG155 THEN 30595 
30580 ? "{CLEAR}{DOWN}{DOWN}{DOWN}{DOW 
N)":POKE 53279,0 

30585 ? ELN;:FOR K55=J55 TO FLAG155*2 
STEP 2:IT=H0LD155(K55)+256*H0LD155(K55 
+ 1 ) 

30587 ? NAME*;"(";IT;",";IT;")=CHR*(15 
5):";:NEXT K55;? “{BACK S}":? "CONT" 
30590 POSITION 2,0:POKE 842, 13:ST0F' 
30595 POKE 842,12:ELN=ELN+LNINC 
30600 ELN=ELN-LNINC 

30610 POKE 559,34:? "{CLEAR}{DOWN}";NA 
ME*;" complete and listed -from":? "lin 
e ";SLN;" to line ";ELN;“." 

30620 ? "{DOWN}{DOWN} PRESS ANY KEY 
T O SEE NEW LINES ":GOSUB 31600 
30640 POKE 766,1:LIST SLN,ELN:POKE 766 
*0 

30700 ? :? "{TAB} SAVE NEW LINES (Y/ 
N) ? “ 

30710 GOSUB 31600:IF A<>89 AND A<>78 T 
HEN 30710 

30720 IF A=78 THEN POKE 752,0:END 
30730 ? "{CLEAR}{DOWN}{TAB} SAVE CRE 
ATED STRING":? 

30740 POKE 752,0:? :? "LIST to what fi 
le";:INPUT BF*:GOSUB 31800 
30750 POKE 752,1:? :? "Prepare storage 
device.":? ;? "{TABI PRESS ANY KEY TO 
CONTINUE ";:GOSUB 31600 
30760 BACK=30740:TRAP 31500:LIST BF*,S 
LN,ELN:POKE 752,0 

30770 IF BF*(1,2)="C:" THEN ? :? "Stri 

ng LISTed to cassette.":END 

30780 ? :? "String LISTed to disk as:“ 

:? "{TAB}";BF*:END 

31000 REM replace 34’s and 155’s 

31010 DIM H0LD34(2*FLAG34),H0LD155(2*F 

LAG155):J34=l:J155=1 

31020 FOR 1=1 TO LEN(DAT*):IHI=INT(1/2 
56):ILO=I-IHI*256 

31025 IF ASC(DAT*(I))=34 THEN H0LD34(J 
34)=ILQ:HQLD34 <J34+1)=IHI:J34=J34+2: DA 
T * (I, I) = " x " 

31030 IF ASC(DAT*(I))=155 THEN H0LD155 
<J155)=ILG:HOLD 155 <J155+1) = IHI:J155=J1 
55+2:DAT*(I,I)="y“ 

31040 NEXT I:RETURN 

31100 REM create string + rom DATA stat 
ements 










31105 ? "{CLEAR}{D0WN3CREATE STRING FR 
OM DATA STATEMENTS”:? 

31110 TRAP 31110:? :? "First line of D 
ATA statements"INPUT DLN 
31115 TRAP 31115:? :? "Number of items 
INPUT STRLEN:GOSUB 31700 
31120 TRAP 31175:RESTORE DLN 
31125 FOR 1=1 TO STRLEN:READ D:IF D<0 
OR D>255 THEN 31180 

31135 DAT$(I)=CHR$(D):IF D=34 THEN FLA 
G34=FLAG34+1 

31165 IF D=155 THEN FLAG155=FLAG155+1 
31170 NEXT I:RETURN 

31175 ? :? “{BELL} OUT OF DATA AT ";I-1 

;" HEMS {DOWN}":? " PLEASE CHECK DATA S 

TATEMEN TS":POKE 752,0:END 

31180 ? :? "{BELL) ITEM » I; • IS NOT 

WITHIN 0-255 {DOWN}“:? " PLEASE CHECK DA 

TA STATEM ENTS":POKE 752,6:END 

31200 REM create string from binary fi 

le 

31205 ? "{CLEAR}{DOWN} CREATE STRING 
FROM BINARY FILE":? 

31210 ? :? "Binary filename":? * (in 
eluding device)INPUT BF$:GOSUB 3180 
0 

31220 BACK=31210:TRAP 31500:OPEN #2,4, 
0,BF$:GET #2,A:GET #2, B 
31225 IF A< >255 OR B<>255 THEN POKE 75 
2,1:? : ? ** {BELL}NOT A BINARY FILE " :CLQ 
SE #2:GOTO 31210 

31230 GET #2,LOST:GET #2,HIST:GET #2,L 
OEN:GET #2,HIEN 

■-> 12C'5 STRLEN=HIEN*256+L0EN-HIST*256-L0 
ST+l 

31240 ? :? "Length of string will be: 

";STRLEN:GQSUB 31700:TRAP 31500 
31280 FOR 1=1 TO STRLEN:GET #2,D:DAT$< 
I)=CHR$(D):IF D=34 THEN FLAG34=FLAG34+ 
1 

31285 IF D=155 THEN FLAG155=FLA6155+1 
31290 NEXT I:CLOSE #2:RETURN 
31300 REM create string from keyboard 
entries 

31305 ? "{CLEAR}{DOWN}CREATE STRING FR 
OM KEYBOARD ENTRIES":? 

31310 TRAP 31310:? :? "Number of entri 

es";:INPUT STRLEN:GOSUB 31700 

31315 ? "Enter data one at a time:":? 

:POKE 752,0:ENTRY=31400+20tNUM 
31320 FOR 1=1 TO STRLEN:GOSUB ENTRY 
31325 DAT$(I)=CHR$(D): IF D=34 THEN FLA 
634=FLAG34+1 

31330 IF D=155 THEN FLA6155=FLAG155+1 


31335 NEXT I:POKE 752,1:? :? ■{TAB}{TA 
B>LAST ENTRY " 

31340 ? "{TAB} ALL ENTRIES CORRECT? (Y/ 

Nl"; 

31345 GOSUB 31600:IF A=89 THEN RETURN 
31350 IF A=78 THEN 31360:REM correct e 
ntries 

31355 GOTO 31345 

31360 POKE 752,0:? :? :? "Correct:":? 

"{TAB}(1) All entries":? "{TAB}(2) Sel 
ected entries 

31365 GOSUB 31600:IF A<49 OR A>50 THEN 
31365 

31370 ? CHR$(A+128):? :IF A=49 THEN 31 
315 

31375 TRAP 31375:? :? "Which entry # t 
o correct";: INPUT I: IF K1 OR DSTRLEN 
THEN 31480 

31380 ? :GOSUB ENTRY:DAT*<I,I)=CHR*(D) 

:IF D=34 THEN FLAG34=FLAG34+1 
31385 IF D=155 THEN FLAG155=FLAG155+1 
31390 ? :GOTO 31340 

31400 TRAP 31485:? "Entry # ";I;" ";:I 
NPUT D:IF D<0 OR D>255 THEN 31485 
31410 RETURN 

31420 TRAP 31490:? "Entry # ";I;“ ";:I 
NPUT D$:IF LEN(D$)<>2 THEN 31490 
31425 D1=ASC(D$):D2=ASC<D$(2)) 

31430 IF Bl<48 OR (Dl>57 AND Dl<65> OR 
D1>70 OR D2<48 OR (D2>57 AND D2C65) 0 
R D2>70 THEN 31495 

31435 Dl=(Dl-48)*(D1C58)+(Dl-55)*(D1>6 
4):D2=(D2-48)* <D2<58) + (D2-55) t (D2>64): 
D=16*D1+D2:RETURN 

31480 ? :? "{BELL} ENTRIES FROM 1 JO 

STRLEN;" ONLY ":GOTO 31375 

31485 ? :? "{BELL} NUMBERS ONLY 0-255 I 

CORRECT LAST ENTRY ":GOTO 31400 

31490 ? :? "{BELL} TWO CHARACTERS ONLY ! 

CORRECT LAST ENTRY ":GOTO 31420 

31495 ? :? "{BELL} HEX FORMAT 0-9.A-F * 

CORRECT LAST ENTRY ":GOTO 31420 

31500 REM error checking 

31510 POKE 559,34:E=PEEK(195) 

31520 ? "{BELL}":POKE 752,1:CLOSE #2:1 
F E=170 THEN ? " FILE NOT FOUND ":TRAP 3 
1500:GOTO BACK 

31525 IF E=162 THEN ? " DISK FULL ":TRAP 
31500:GOTO BACK 

31530 IF E=130 THEN ? " UNKNOWN DEVICE " 
:TRAP 31500:GOTO BACK 
31535 IF E=165 THEN ? " BAD FILE NAME ": 
TRAP 31500:GOTO BACK 

31540 IF E=138 THEN ? "DEVICE DOES NOT 




























RESPOND":TRAP 31500:GOTO BACK 
31545 IF E=167 THEN ? " FILE LOCKED - U 
NABLE TO WRITE ":TRAP 31500:GOTO BACK 
31550 ? " ERROR NUMBER ";E;" AT LINE 
PEEK(186>+256*PEEK(187):END 
31600 OPEN #1,4,0,"K:GET #1,A:CLOSE 
#1:RETURN 

31700 TRAP 31700:? :? "First line -for 
string storage"INPUT SLN 
31710 TRAP 31710:? :? "Line # incremen 
ts“;:INPUT LNINC:? 

31720 TRAP 40000:POKE 752,1:? :? :? "{ 
TAB} ALL ENTRIES CORRECT? (Y/N) »; 

31730 GOSUB 31600:IF A=78 THEN POP :CL 

QSE #2:POKE 752,0:GOTO 30285 

31735 IF A< >89 THEN 31730 

31740 ? "{CLEAR}LDOWNlCreating string. 

..DIM DAT$(STRLEN>:FLAG34=0:FLAG 155= 
0:RETURN 

31800 REM check -filename 
31810 IF BF$="C:" THEN RETURN 
31820 IF LEN(BF$)<3 THEN 31850 
31830 IF BF$<1,2)<>“D:" THEN 31850 
31840 RETURN 

31850 ? :? "TBELLT SPECIFY C: OR D:FILE 
NAME":? :INPUT BFt:GOTO 31810 


0 REM Listing 2 - Variable manipulatio 
n demo 

100 DIM DAT$(1) 

110 POKE 106, PEEK (106) -8: RAMTOF'=PEEK (1 
06) 

120 VT=PEEK(134)+256*PEEK(135) 

130 AT =PEEK(140)+256IPEEK(141) 

140 0S=(RAMT0P+4)1256-AT 

150 HI=INT(OS/256):L0=0S-256*HI 

160 POKE VT+2,LO:POKE VT+3,HI 

170 POKE VT+4,0:POKE VT+5,4 

180 POKE VT+6,0:POKE VT+7,4 

190 DAT4="A":DAT*(1024)="A":DAT* <2)=DA 

T* 

200 GRAPHICS 0:FOR 1=0 TO 1023:? PEEK( 
256*(RAMTOP+4)+1);" :NEXT I 


MACE JOURNAL 
LISTING 
CONVENTIONS 


To reduce our readers' eyestrain, we have 
adopted a special method for listing programs* 
Programs will be listed in 38 column format, 
and certain characters will be replaced by an 
abbreviated form of their function, printed 
within curly braces (see below)* Any 
characters to be typed in inverse video will be 
underlined, and control characters will be 
represented by their respective letters within 
curly braces. If a character within braces is 
also underlined, toggle the inverse video on 
and then hold down the control key while 
typing the character. 

This method may seem awkward at first, but 
you should quickly get used to it, and the 
listings will be much easier to read. The 
special characters which will be spelled out 
are as follows} 


When you see. 

You should type* 

{CLEAR} 

ESC SHIFT < 

OP> 

ESC CTRL - 

<D0WN> 

ESC CTRL = 

{LEFT} 

ESC CTRL + 

{RIGHT} 

ESC CTRL * 

{BACK S} 

ESC DELETE 

{DELETE} 

ESC CTRL DELETE 

{INSERT} 

ESC CTRL INSERT 

{DEL LIND 

ESC SHIFT DELETE 

ONS LIND 

ESC SHIFT INSERT 

{TAB} 

ESC TAB 

{CLR TAB} 

ESC CTRL TAB 

{SET TAB} 

ESC SHIFT TAB 

{BELL} 

ESC CTRL 2 

{ESC} 

ESC ESC 

{COMMA} 

CTRL , (eowia) 

{PERIOD} 

CTRL . (period) 

{SEMI-COLON} 

CTRL | (seni-colon) 

{SHIFT =} 

SHIFT = 


If you see5 

Type! 

{A} 

CTRL A 

A 

INV, VIDEO A 

CA} 

INV. VIDEO C 


— 1 o — 













BASIC XE‘ Gives Your Atari 130XE All 
The Performance It Should Have Had In 

The First Place 



In the home computer races, the Atari 130XE stands out as a price leader. But using underpowered Atari 
BASIC” on this otherwise fine machine is like racing in the Indy 500 with half your cylinders missing. 

So don’t get left at the starting line with only half an “engine.” Change to the performance leader now! Buy 
BASIC XE from OSS, the only programming language designed especially for the Atari 130XE. 

Just look at what you get for one low sticker price: 


BEST MILEAGE: With over 60,000 more bytes 
for your programs, BASIC XE lets you use all the 
memory you paid for.* 

MORE HORSEPOWER: Run Atari BASIC pro¬ 
grams 2 to 6 times faster.* Even with its incredible 
power, BASIC XE is compatible with Atari BASIC. 

BETTER HANDLING: With auto line number¬ 
ing, renumbering, program cross referencing, 
English error messages, and more. 


CLASSIC DESIGN: Show ofT the sleek struc¬ 
tured style of your own programs when you use 
BASIC XE statements like PROCEDURE, 
IF...ELSE, and WHILE...ENDWHILE. 

FREE ACCESSORIES: Get over $100 worth of 
Atari BASIC options FREE when you buy BASIC 
XE: complete Player/Missile Graphics support, 
string arrays, DOS access, SORT commands, read¬ 
able listings...over 50 extras at no additional charge. 


■ If you’re ready to step up to real performance... YOU need BASIC XE now! 

■ If you haven’t written your first BASIC program... YOU need BASIC XE now! 

■ If you’re already a real pro in BASIC... YOU need BASIC XE now! 

■ BASIC XE may well be the best buy any Atari owner ever made. 



Optimized Systems Software, Inc. 

1221B Kentwood Avenue. San Jose. California 95129 (406) 446-3099 


*Want to know more? Call or write for free brochure or ask your local dealer. 

Atari 130XE ™ and Atari BASIC™ are U.S. registered trademarks of Atari Corporation. 









ERROR MESSAGES 
Atari Never Told You About 


[After the mass firings in Sunnyvale when 
Jack Tramiel took over, certain documents 
marked "Top Secret" were found in a trash can 
at a rest area on 1-80 East, The MACE 
Journal is proud to be the first to present this 
valuable information to the world of Atari 
users, -Ed,] 


Note? The following error messages result 
from external malfunctions, including operator 
error, and are only implemented on machines 
containing the experimental PSI (Pretty Small 
Integrated) chip. To determine if your machine 
has the PSI chip installed, set up a loop to 
read location 53770 (*D20A), the random 
number generator. Concentrate on a number 
between 0 and 255? if you can force the output 
of 53770 to equal your chosen number more 
than 87.45*4 of the time, you are one of the 
lucky few with the PSI chip. 


ERROR 256 - Operator Negligence 
You failed to stare intently at your 410 or 
1010 recorder during the entire CLOAD 
process. Rewind the tape to within ,01 mm of 
the original recording position, take a deep 
breath, and hold it while watching the tape 
grind through the recorder. It has been shown 
that blinking during a cassette load can set up 
shock waves sufficient to knock the tape head 
out of alignment and abort the load. 

ERROR 257 - Keyboard Adhesion Error 
There is peanut butter or some other sticky 
substance underneath your keycaps. (This 
error does not occur on Atari 400's with the 
original membrane keyboard.) You can try to 
pry off the keycaps yourself and clean up the 
mess, or face ridicule by bringing your machine 
to the service department of your local 
computer store. 

ERROR 258 - Disk Damage Error 
Your toddler has been trying to play your 
disks on his Fisher Price Record Player. This 
error can also occur when disks have been used 
as Frisbees, coasters, or to jimmy a lock. 


ERROR 260 - TMF Error 

A Transient Magnetic Field has erased all of 
the data on your disks and/or tapes. You are 
now the owner of 253 flat black plastic 
squares which can be used (with little success) 
to tile your rec room floor. 

ERROR 261 - Release Date Shock 
A previously-announced Atari product has 
been released on time} the shock was too much 
for your computer, which will be inoperative 
for the next three months, thereby bringing 
things back to normal. 

ERROR 262 - Poor Programming Technique 
You have aggravated your BASIC cartridge by 
writing "spaghetti code", full of tangled GOTO 
statements. In retaliation, it has renamed all 
of your variables as carriage returns 
(CHR*(155)). No recovery possible. 

ERROR 263 - Late Night Error 
This error most often occurs at 4 am and is 
due to the fact that the computer is being put 
to sleep by your yawns. Grinding No-Doie 
between the cartridge and its connectors will 
prevent this error, as it will totally disable 
your system and you will be able to get lots of 
sleep in the next few months while you are 
waiting for your machine to be repaired. 

ERROR 264 - Fed Detected 
An FBI informant has tapped into your phone 
line and is monitoring your pirate downloads. 
For *59.95 (plus *2.00 shipping and handling) 
you can buy an Honesty Chip which will 
immediately switch the transmission to a 
public domain program. The Honesty Chip is 
available from I, M. Cott, Cell Block 534, San 
Quentin, CA 94013. 

ERROR 265 - CUI Error 

The operator is guilty of Computing Under the 
Influence of proscribed substances. Power 
down and wait for operator detoxification 
before attempting further operation. 

ERROR 266 - Malfunction Timeout 
It has been too long since an error has 
occurred, so the Error Generator, ERRGEN, at 
location 49155 <*C003) has chosen to spice up 
your life. This error is seldom seen because 
of the unlikelihood of operating your computer 
for more than 15 minutes without an error. 


— 12 — 





TWO STRATEGIC 
GAMES 

Reviewed by Charles M. Hostetler 


[The reviewer reports that he has been a 
strategic games fan since the early 60's, when 
he started playing "Blitzkrieg" and "Battle of 
Britian". Since then* he and his wife Susan 
have collected some 2000 or so "simulations"* 
plus a number of boardgames. 

He purchased his Atari 800XL in the winter of 
'84 in hopes of using it in his law practice* but 
managed to write only one single-page will* 
which took about 8 hours, since he didn't have 
a word processor and had to use the "LPRINT" 
command. He has since been employed by an 
insurance company and can dedicate the time 
spent with his Atari to playing and reviewing 
games. He has been a member of MACE since 
last fall. -Ed«I 



turn 


STAR WARRIOR 
Epyx 



£U)3 


I picked up this disk for *8.00 at a closeout of 
Epyx software? I think it was well worth the 
money. Star Warrior comes with a rule book 
and two 4x8 cards? one for a summary of the 
19 Commands (this is a keyboard* not a 
joystick, game), and one for a two sided map of 
the playing areas. 

In Starwarrior you play a native of the Planet 
"Fornax" who, with others, has decided that 
the recent acquisition of your homeworld by 
the Stellar Union has led to unpleasant side 
effects, such as "taxation without 
representation". As such you hope that the 
acquisition of two “Furies" (suits a la 
Heinlein's Starship Troopers) can allow your 
group to "make a statement" and lead a revolt. 
The statement you hope to make is the 
destruction of the Military Governor. 

That is Scenario Two in the game. Scenario 
One is the diversion of Union forces whilst 
your compatriot does in the nasty Governor. 
Your mission #1 is limited by time. You can 


choose your own time limit, which sets the 
time before "RECALL" when you are to return 
to your starting "square" to be successful. In 
mission #2 -there is no set time limit, but the 
longer you spend trying to blow up the 
Governor, the more energy you use. 

There are nine types of enemy units varying 
from infantry which can be ignored as long as 
your shields are up on maximum, to heavy 
tanks and Nitron Guns (the latter being a type 
of artillery best shot at before being shot by). 
You have a choice of three basic suits? the 
Dragoon, Marauder, and Ninja? or you can 
design your own from components, (There is a 
cost chart). 

To get around, you can "fly", “jump", or "walk". 
Flight is recommended for rough terrain. When 
flying it is a good idea to zigzag as straight 
flight does seem to attract more enemy units 
than needed. 

You are not without weapons. Your Powergun 
is effective at close range provided its range 
is properly set. I wouldn't recommend it too 
highly, however, as it's not as sure as a 
well-placed missile, or the Blaster. Also, the 
Powergun uses the same energy that the rest 
of the systems use, including your shields and 
flight power. The rulebook calls the Powergun 
the weapon of choice for the Ninja suit as it is 
the quietest and least likely to attract other 
"baddies". 

The blaster fires three charges that have a 
cumulative effect (unlike the Powergun). 
Naturally, the number of charges you have is 
limited. 

Missiles explode in a mushroom cloud and are 
targeted by direction and range. These too are 
limited in number. They are also the only way 
to destroy “installations", which are worth 
more points than units and are where the 
Governor can be found, 

“Installations" are of two basic types? Towns 
and Forts. These may be civilian or military. 
The only way to tell is through your "0"bserve 
command. This is particularly important as 
points are deducted for doing in innocent 
civilians. 


13 — 




The screen display is about 80% a square that 
represents a terrain type. These are mountain 
(good graphic background), clear, swamp, and 
forest (all of average graphics). Rather than 
scrolling, exiting a square blanks and flashes 
the screen to the next square. You can move 
diagonally. The entire playing area is about 
80 squares. These repeat the last terrain 
rather than wrap around to the "other" side. 
I've never visited half a field in dozens of 
games. 

You have available an "invisibility" command 
with the Ninja suit and a Decoy option with the 
Marauder. Both of these options are helpful 
when your shields are down and your medical 
system is failing. (Your wounds are regularly 
healed at a modest rate, otherwise.) 

You also have about 12 "windows" on your 
display that tell your direction, number of 
missiles, charges for your blaster, energy 
units left, the type of enemy unit present, if 
any, etc. 

I thoroughly enjoyed this game, and if you like 
strategic simulation games, you probably will, 
too! 


SARATOGA. 
APX Classics from Antic 
Program by Paul Wehner 


This is a game simulation of 1777, when the 
British had their last, best chance to win the 
American Revolutionary War. The British plan 
was to concentrate their three armies, and in 
the process, eliminate Washington's 
Continental Army as an effective force. As 
history tells us, Washington met and defeated 
Burgoyne (Gentleman John) near Saratoga. 

The game uses the system of "Eastern Front", 
allowing the solitary player to use the joystick 
to control his American forces and read the 
British dispositions. The cursor also scrolls 
the screen through the 15 screen map. 
Forests, mountains, cities, rivers, and forts 
are depicted with good graphics. 
Unfortunately, the one lack of the system is 
the lack of place names. (This may be an 
inherent limitation of the system.) 


Battles are joined by commanding your unit to 
a square occupied by an enemy unit, When all 
your orders are in and START is pushed the 
battles are fought, complete with sound 
effects. The usual way to destroy enemy units 
is through surrounding them, although 
repeated attacks can destroy a unit. Retreats 
are handled automatically by the computer. 

The documentation is all on the reverse side 
of the disk, a feature that I wish more 
companies would consider. The documentation 
can be printed or read on screen. There are 
multiple scenarios from which to choose, 
including one simple enough for beginners to 
learn the system and still win. Victory is 
determined by control of such places as New 
York, Boston, and West Point (Washington, 
D.C. not being around yet). Supplies and 
seasonal changes (the Revolutionary forces 
double in the summer) are handled 
automatically, also. Overall, this is an 
excellent game and well worth the $15.95 price 
tag from Antic Arcade. 



— 1 4 — 




















EDUCATIONAL 

SOFTWARE 

by Hugh McLean 

Co-Sysop, BUNKY'S BOARD (313) 546-3689 


My interest in educational software is fairly 
deep-seated, and while neither extensive nor 
exhaustive, it is intensive. One of my first 
real computer projects was a rather lengthy 
educational program for BUNKY, which proved 
to be beneficial for both of us* I am somewhat 
disdainful of the psychological advertisements 
that subtly suggest my parental inadequacy 
and primordial myopia because I don't rush to 
the local computer store and purchase a 
computer for my college bound child. If I 
would just be responsible as a caring parent 
should, my child would have a computer and be 
a successful student. The rather ambivalent 
equate that “student failure" is equivalent to 
"parental frugality" irritates me. 

Another thing that perturbs me is the hype of 
availability of "educational software", that 
ubiquitous term which delineates inferior 
systems by virtue of volume of programs which 
are designated as "educational". Many of 
these "educational" programs advocate the 
advantage of "hand/eye coordination", and 
after all, we certainly wouldn't want our 
children to be deprived of that. Hand/eye 
coordination, in my opinion, is that inane 
ability to generate a higher score in FAC-MAN 
or DONKEY-KONG, and has absolutely nothing 
in common with S.A.T. or A.C.T. scores. 

I was excited about purchasing a VCR a few 
years ago - excited because at last I could 
rent some really good tapes and enlarge the 
horizons of my educational pursuits by 
studying some of the topics I was too busy to 
pursue formally. Alas, my enlightenment was 
only an ambitious dream, for I found almost 
nothing available. Sick, trashy, x-rated 
movies abound, but try to find something on 
archaeology, or even the French language, 
With current technology making 
color-sensitive, erasable, optical disks 
coupled with computer controlled laser 
machines that can function frame by frame, or 
sequentially, an educational tool exists that is 
totally amazing and virtually unexplored. 


Today's computer technology reminds me of the 
early 1900's when automobiles were invented 
before the support systems of macadam roads, 
expressways, gas stations, lead free fuels, 
synthetic elastomers, curved shatterproof 
wind-shields, and AM/FM stereo tape players. 

I anticipate that personal computers are more 
than a passing Hoola Hoop fad, and that they 
will be the progenitor of new tools that will 
provide as yet unimaginable conveniences 
tomorrow that will be as common as gas 
stations are today. 

I recently read an article in the March '85 High 
Technology magazine entitled "The future of 
Educational Computing", by Moses T.L. Ma that 
was as rare as it was refreshing. According to 
the article, learning has four levels, each one 
associated with a different type of mental 
operation? 

1. MEMORIZATION? This is usually a 
repetitive operation where a student learns by 
rote and doesn't understand what he is 
memorizing, or its application? math functions, 
spelling, color and symbol associations, etc. 
This is the prime area that educational 
software uses, since repetitive functions make 
good use of the computer. 

2. UNDERSTANDING! This level of learning is 
the process by which underlying principles are 
discovered. The student finally realizes the 
function of his memorization efforts. 

3. CREATIVITY? This progressive level of 
learning is achieved when the student 
develops his ability to think for himself, using 
the understanding that he has acquired. 
Educational software hasn't really done much 
in this area, understandably, since it is easier 
and less time-consuming to develop 
"memorization" software. 

4. WISDOM! "This level goes beyond 
memorizing efficiently, understanding 
completely, and creating beautifully, to the 
ability to see underlying realities." 

While these four levels of learning may seem a 
bit beyond the scope of the personal computer, 
they nevertheless represent goals to which 
educational software should aspire. 


- 15 - 





Jan Landis displays our Birthday Cakes 


Kirk Revitzer and Dave Duberman 
cut our Birthday cake 




Dino Roggero raises important questions 
about the 520 ST. 



Sharie Middlebrook and Burt Gregory 
tally renewal memberships 



I 

\ 


l 


Dave Duberman our guest speaker answers questions from MACE members 















Dave & Bev Zappa custodians our gth Bjrthday celebration 

of our Disk Library M 



Dave Duberman explains the 520 ST 
to Dino Roggero and Alva Thomas 


Dave Duberman gives an exclusive 

demonstration to Eric Wujicik 

(Detroit News) and Howard Kenig (WHYT) 



Some of the items given away to the MACE members 









RALLY SPEEDWAY 
Adventure International 

Reviewed by Jav Slatkin 


Did you ever run across a game that wasn't 
long, wasn't complex, but was just plain fun? 
Well, those games are hard to come by these 
days, but I've just run across one here, 

The object of RALLY SPEEDWAY is simple! 
get across the finish line alive before your 
opponent does, When you first boot up the 
game you get the main menu for a brief moment 
and then the title screen. It's not very 
"classy", but the game play more than makes 
up for it. 

You have several options to choose from, such 
as the type of track. You have your choice of 
a dry, wet, or icy track. I usually choose wet 
because the game is more fun on a slippery 
track but in my opinion an icy track is too 
slippery. You have a choice of your "top 
speed", You can choose 40, 80, or 100 mph. 
You also have a choice of rate of acceleration* 
fast, medium, or slow, 

You also have another option which is nice to 
have. The two choices are called "Real Life" 
or "Only in a Computer". In "Real Life" when 
you're speeding around the track and make 
contact with a tree or house you have a violent 
crash and you see your driver rolling through 
the flames as he's tossed out of the car, 
"Only in a Computer" is nice. Instead of 
crashing, you drive through the houses and 
trees! You can cut across the wooded terrain 
and onto the track again. I think it's fun. 

In addition, you can not only make your own 
track, you can save it to disk! When you 
create a track you can start from scratch, or 
alter any of the two tracks programmed into 
the game and save those to disk as well. 

Playing with two players is a different story 
altogether. You can take out your aggressions 
on your opponent by bumping him into a violent 
crash. When you get so far ahead of him that 
your opponent is going off the screen, he 
obtains a 5 second penalty. I found these 
quite frequent in game play, Even the most 


masterful drivers will receive this penalty 
often. 

Comparing this game to the amount of disk 
space it takes up, I think this game is 
excellent ! I find it excellent compared to any 
car-driver game for that matter. This game 
contains brilliant sound and smooth four-way 
screen scrolling. On a scale from 1 to 10 I 
give it a very solid 9. 


ACE ©O CARTRIDGE 
Magic Software 

Reviewed by Murray D. Kucherawy 


I love my Atari 800. I bought it in 1982 and 
when I got tired of playing games, I installed 
a BIT-3 board, purchased the 80 column 
version of Letter Perfect and did serious word 
processing on a letter quality printer. My 
wife edits a medical journal and after seeing 
my system, she purchased two for her office. 
Her office is in a university hospital and she 
still chuckles over the raised eyebrows when 
she talks about her Atari word processor. 

The 800XL with its "closed" construction 
seemed to shut out third party entrepreneurs. 
Except for a brief flurry concerning Atari's XL 
expansion box, the 80 column capability was 
gone. MACE's birthday party, however, gave 
us a real surprise. Magic Software of Monroe, 
MI introduced ACE-80, a 12K cartridge which 
will put 80 columns on your TV or monitor. 
There are two versions. 80XL works in all 
Atari computers with at least 48K. In the XL 
and XE models, you can program in BASIC in 80 
columns. It also fits the left cartridge slot of 
the 800 but, of course, you can't 
simultaneously use BASIC. ACE-80 is aright 
cartridge slot version (yes, you heard 
correctly!) which is specifically designed for 
the 800 so that the left slot is available for 
your BASIC cartridge. 

The central question of this review then 
becomes "How legible is the display?". The 
answer depends on what you are using for your 
display. A monochrome monitor produces an 
excellent display ("WOW!", to quote a local 
dealer) - comparable to the BIT-3 display. A 



color monitor takes away some of the 
resolution but it is still good. A color TV 
gives a good/fair display depending on how 
well the set has been tuned but I could not 
recommend it for extended use. I was unable 
to test it on a B/W TV but my guess is that 
the display would be very good on a properly 
tuned set. I recommend you see the display on 
your terminal before you purchase. The final 
screen appearance can be "fine-tuned" to your 
liking by use of the START and SELECT keys. 
Unfortunately, this adjustment must be 
performed at each session. My suggestion to 
the designers would be to have a file written 
to disk after initial set-up so that subsequent 
screen set-ups would be automatic. 

With the cooperation of LJK, Magic Software 
sells reasonably priced versions of LETTER 
PERFECT, DATA PERFECT and SPELL 
PERFECT which have been modified to run with 
ACE 80. The list price of ACE 80XL/ACE 80 is 
$49.95 . At less than 25% the cost of an 80 
column board, this is a very attractive way of 
upgrading your Atari to professional levels. 


SY DRAFT 

-OFFICE, ART & DRAFTING SUPPLIES-^ 







LINCOLN CENTER 
26130 Greenfield 
Oak Park, Ml 48237 

Phone 

(313) 968-2620 


YOUR WORD PROCESSING CENTER 

SPECIAL PRICES FOR MACE 
SSDD DISKS: 10 for 



ICO for 
lOOO for 

TIGER HATS 
DISK PUNCH 
DOUBLE-UP DISK PUNCH 
INDUS GT DRIVE 


MEMBERS 

* 6.98 

* 65.00 
*600.00 

* 1.99 

* 5.00 

* 8.95 
*227.00 


GREETINGS 
FROM YOUR EDITOR... 


First, I would like to thank EVERYONE who 
pitched in and helped out at last month's 
meeting. When we found out just a few days 
before the meeting that Dave Duberman from 
Atari actually would be attending, we knew 
that attendance would be up and we would need 
even more volunteers than normal for a 
Birthday meetings. Due to all the help we got 
from our members, things went smoothly and 
everyone seemed to have a good time. 

Thanks are also in order for our advertisers 
and supporters who donated so many door 
prizes. Remember these merchants when it's 
time to go computer shopping* Sector One 
International, RiteWay, Family Computer 
Center, Just Software, Software Library, OSS, 
Sy Draft, and DataWorld Distributing. (Hope I 
haven't left anyone out!) 


MPP lOOOE MODEM * 96.00 

MPP MICRO STUFFER *103.00 

ATARI PRINT SHOP * 30.00 

KOALA PAD - ATARI * 29.95 

FLIGHT SIMULATOR * 34.00 

BMC PRINTER BX80 *185.00 

SCM D100 PRINTER *190.00 

PANASONIC 1091 PR1NTER*279.00 
DATA CASE (HOLDS 50) * 8.50 

MEDIA MATE (HOLDS 50) * 9.50 

DISK CASE (100 W/LOCK)* 13.00 

4E HAVE HARD-TO-FIND ITEMS LIKE: 
COLOR PRINT SHOP PAPER 
PRINT SHOP ENVELOPES 
COLOR PRINTER RIBBONS 
SOFTWARE IS ALWAYS 30% OFF 


Keep those submissions coming in - we have 
had some very good articles lately, and I hope 
they continue. 


- 19 - 












THE SHELL GAME input of 155, which is the ATASCII code for a 

CRACKING ATARI LOGO carriage return. This will make the program 

loop until the <RETURN> key is pressed, 
by Ann McBain Ezzell WAITKEY can be used whenever you want to 

wait for a specific keypress. 


Working with Logo and turtle graphics can help 
children (and adults) develop the ability to 
estimate angles and distances. This month's 
"game" will offer practice at several different 
levels as the user tries to follow the path 
drawn by a turtle. This game could be 
improved by the addition of sound effects 
and/or color changes} feel free to tinker with 
it as you wish. If you are feeling adventurous, 
you might think about adding some error 
checking to make sure that the leader turtle 
doesn't go off the edge of the screen. 

To play the game, type in the procedures and 
global variables as listed here, then type 
"FOLLOWME". You will have to choose a level 
of play from 1 to 4. On all levels, the leader 
turtle draws a path by choosing an angle and a 
distance and adding them to a list of 
commands. The possibilities increase with 
increasing levels of difficulty. Level 1 allows 
only RT 90 and LT 90, and the distance is 
always FD 20. Level 2 adds in RT 45, LT 45 
and FD 40. At Level 3, the turtle can also turn 
RT 30 or LT 30, and go FD or BK 20, 40 or 10. 
Level 4 adds a 60 degree turn and a distance 
of 30 (FD or BK). At Level 1, you must match 5 
moves to complete the game successfully} this 
number increases by one for each higher level. 

The main procedure calls procedures which 
introduce the game, get the level of play, run 
the game, and ask if you want to play again. 

TO FOLLOWME 
TITLE 

TYPE CENTER LEVEL OF PLAY ( 1 - 4 ) }] 

GETLEVEL 

CS 

TELL CO 1 2 31 HT 

MAKE "PATH C1 

RESET 

PLAY 

FINISHED 

END 

TITLE prints out an introduction to the game 
and calls the procedure WAITKEY with an 


TO TITLE 
TS CT 
PR " 

PR CFOLLOW THE TURTLE...] 

PR " 

PR C WATCH THE TURTLE AS IT ADDS 
STEPS] 

PR CTO ITS PATH AND TYPE IN THE 
PROPER] 

PR CCOMMANDS TO MAKE YOUR TURTLE 
FOLLOW] 

PR CTHE SAME PATH.] 

PR " 

PR CHIT < RETURN > TO CONTINUE] 

PR " 

WAITKEY 155 
END 

TO WAITKEY IN 

IF EQUALP RC CHAR IN CSTOP] 

WAITKEY IN 
END 

The next step is to get the difficulty level for 
the game. The prompt is printed in TITLE 
rather than GETLEVEL so that the program 
can loop through GETLEVEL until a valid 
response is given (1-4) without printing out 
the prompt each time. If the input is a number 
and if it is between 0 and 5, the number is 
echoed back to the screen and the program 
waits for a carriage return to continue the 
game. This WAITKEY 155 could be eliminated, 
but many people are used to pressing 
<RETURN> after an entry. An extraneous 
<RETURN> can often mess up your program, so 
it's a good idea to plan for one. 

TO GETLEVEL 
MAKE "LEVEL RC 

IF NUMBERP 5LEVEL CIF AND ILEVEL > 0 
ILEVEL < 5 CPR ILEVEL WAITKEY 155 STOP]] 
GETLEVEL 
END 

RESET clears the screen before the start of 
the game and after each successful round 
during the game. It also puts the turtles at 


— PiO— 







position CO 20] to put them nearer to the 
center of the split graphics screen so they are 
less likely to run off the edge. When moving 
the turtles# the pens must be up so that they 
won't leave a trail back to the center# 

TO RESET 

CS 

TELL C0 13HT PU 

SETPOS CO 20] 

SETH 0 

PD ST 

END 

PLAY is heart of this game? it controls the 
leader and follower turtles and checks to see 
that the two paths are the same. First it calls 
MAKEPATH to start the selection of the 
leader turtle's path. MAKEPATH uses a 
procedure ITEM which is from the Atari Loop 
Reference Manual, page 59. ITEM will return a 
specified item from within an object# whether 
word or list. There are four lists set up as 
global variables which contain the choices 
available to the leader turtle. There are only 
two choices for turning, RT and LT# but the 
other lists each contain four choices for the 
path. ("DIR has two FD's and two BK's 
because Levels 1 and 2 only allow forward 
motion# while 3 and 4 allow either direction.) 
Depending on the value of .LEVEL# a random 
choice will be made from each of the lists in 
turn and the commands will be added to the 
list {PATH. (The higher the level# the greater 
the possible value for the random number,) 
Each time MAKEPATH is called, JPATH will be 
lengthened by four items (for example# RT 90 
FD 20). 

PLAY then tells turtle 1 to execute the 
commands found in JPATH. You must type in 
commands to make turtle 0 follow the same 
path. If the two lists (JPATH from 
MAKEPATH and JPATH2 as read from the 
keyboard) are not equal# PLAY calls MISTAKE# 
which prints out the correct list of commands 
and the number of steps matched correctly. 
AGAIN asks if you want to try again# 
returning control to TOPLEVEL if the answer 
is other than "Y“. 

If the two paths are the same# and the game 
has not reached the maximum number of rounds 
for that level# PLAY calls itself after 


executing a RESET and a DELAY. DELAY is 
simply a recursive procedure which counts 
down from its input to 0. 

TO PLAY 
MAKEPATH 
TELL 1 SETPN 0 
RUN JPATH 

CT PR CENTER THE COMMANDSJ] 

MAKE "PATH2 RL 
TELL 0 SETPN 2 
RUN JPATH2 

IF NOT EQUALP JPATH JPATH2 [MISTAKE] 
IF 4 * ( {LEVEL + 4 ) > COUNT JPATH 
[DELAY 20 RESET PLAY] 

END 

TO MAKEPATH 

MAKE "PATH LPUT ITEM ( 1 + RANDOM 2 ) 
JTRN JPATH 

MAKE "PATH LPUT ITEM ( 1 + RANDOM 
{LEVEL ) JDEG JPATH 

MAKE "PATH LPUT ITEM ( 1 + RANDOM 
{LEVEL ) JDIR JPATH 

MAKE "PATH LPUT ITEM ( 1 + RANDOM 
{LEVEL ) JDIS JPATH 
END 

TO ITEM JN {OBJECT 

IF JN = 1 [OUTPUT FIRST {OBJECT] 

OUTPUT ITEM JN - 1 BF {OBJECT 
END 

MAKE "TRN [RT LT] 

MAKE "DEG [90 45 30 60] 

MAKE "DIR [FD FD BK BK] 

MAKE "DIS [20 40 10 30] 

TO MISTAKE 

CT PR [SORRY.,. WRONG MOVE] 

PR [THE MOVES SHOULD HAVE BEEN!] 

PR JPATH 

TYPE [YOU MATCHED \ ] 

TYPE ( COUNT JPATH ) / 4 - 1 
TYPE CHAR 32 
PR [MOVES] 

AGAIN 

END 

TO DELAY JN 
IF JN = 0 [STOP] 

DELAY JN - 1 
END 


21 — 





If PLAY cycles through the maximum number of 
rounds without an error# control passes to 
FINISHED, which offers congratulations and 
calls AGAIN to ask if you want another try. 

TO FINISHED 

CT PH [CONGRATULATIONS!] 

PR [YOU FOLLOWED THE TURTLE!] 

AGAIN 

END 

TO AGAIN 

TYPE [DO YOU WANT TO PLAY AGAIN?] 
MAKE "ANSWER RC 

IF EQUALP 'ANSWER "Y [FOLLOWME] [CT 
.CALL 39929] 

END 

This game is not fully polished# it would be 
easy to add color and sound to liven it up. 
Less simple would be adding error checking 
(which is why I didn't do it). You might change 
the flow of the program so that MAKEPATH is 
called the necessary number of times for each 
level to create the entire path before drawing 
any of it. That way you could check to see 
that the leader turtle did not go off the edge 
of the screen. Then you would have to write a 
procedure to check the input list against the 
appropriate part of the leader's path. There 
may be an easier way to control the turtle# I'd 
be glad to hear it. 


BURNOUT ALERT!! 


Your dedicated Editor is running out of ideas 
for this column. Maybe you are getting tired 
of reading it - if you're not# SOMEBODY had 
better come out of his or her shell and send in 
some suggestions. Better yet# send in some of 
your own procedures or Logo activities. You 
don't have to have a perfectly complete 
program# half of the fun of Logo is tinkering 
with it and tailoring it to fit your needs, 
Maybe someone else has the perfect solution 
to that problem that has been bugging you for 
months. You'll never know unless you ask. 


new users forum 
by Tom Sturia 


You say you can't tell a bit from a byte? You 
finally purchased a disk drive to replace that 
slow cassette, but DOS is a foreign language? 
AtariWriter is great# but why won't it 
underline? Your family bought a modem# but 
bulletin boards "hang up" on you when you call! 
IS THAT YOUR PROBLEM BUNKY ? 

Well, MACE has just the thing for you and your 
family - the New Users Forum. We'll do our 
best to answer your questions# show you how 
to use your Atari for something besides games 
and explain "How things work!" 

We'll meet monthly at the Southfield Civic 
Center# in one of the upstairs meeting rooms 
at Parks & Recreation (across the hall from 
the Pavilion). Meetings will be on the fourth 
Monday of each month. The first three 
meetings will be on June 24th# July 22nd and 
August 26th. These meetings are free? 
however, seating is limited# and MACE 
membership cards will be required for 
admission. 

So# if you are interested in attending the New 
Users Forum# get those questions and/or 
requests ready. Please call me (from 7-10 pm 
at (313) 477-2345) if you would like to have a 
specific topic or software package discussed 
at the Forum and I'll try to have an "expert" 
there to speak on the topic. 


MACE SIGS 


The following Special Interest Groups are still 
active. Contact the person listed for more 
information. 

Atarimusic SIG5 Mike Lechkun, (313) 973-8432 
or MACE EAST BBS, (313) 978-1685 

FORTH Interest Group* Tom Chrapkiewicz# 
(313) 562-8506 or 845-4570 x60 

SIG-EDJ Mark Kennedy# (313) 465-5849 

evenings 









THOUT 

ICE 


SECTOR - ONE 



<Pf ATARI 

SECTOR-OIE KlTERdfiTiraWL 



INTERNflTIO COMPUTER MAIL ORDER WORLDWIDE 

37220 TRICIA DRIVE STERLING HEIGHTS, Ml. 48077 

ORDERS: 313-978-2208 8AM-8PM MODEM: 313-978-8087 24 HOURS 


130XE128K $159.00 

800XL 64K $ 99.00 
850 INTERFACE $114.00 
1200XL64K $59.00 
1010 RECORDER $ 39.00 
1020 PRINTER $49.00 
1025 PRINTER $179.00 
1027 PRINTER $249.00 
1030 MODEM $89.00 
1050 DISK DR. $189.00 
TOUCH TABLET $ 44.00 
CK85 KEYPAD $29.00 
HAYES 300 $149.00 

HAYES 1200 $399.00 
MOON PATROL $18.00 
SKYWRITER $ 16.00 
TRACK & FIELD $ 21.00 
PRINT SHOP $35.00 
SYN CALC $ 39.00 
SYN CHRON $ 34.00 
SYN COMM $ 34.00 
SYN PILE $ 39.00 
SYN STOCK $ 34.00 
SYN TREND $ 34.00 
S.A.M. $ 44.00 


SEE US 
AT 

M.A.C.E. 








6 FT. I/O CABLE$12.00 
I/O CONNECTORS$ 2.50 
850-HAYES CABL$19.00 
850-EPS0N CBL$24.00 
MPP1000-E $99.00 

MPPU50LF. $59.00 
MPP U52 BUFF $1400 
MPP 1156 S.I.F. $40.00 
MPP MIC. PRT. $49.00 
JOYSTICK CABLE $ 2.00 
VG170 JOYSTICK $ 5.50 
JOYSTICK 2 BUT $ 6.50 
VG172 PADDLES $12.00 
MONITOR CABLE $ 4.00 
1020 PEN PACK $ 2.50 
1020 PAPER PK. $ 3.90 
1025 RIBBON $ 1.75 
1027 INK ROLLER$ 3.50 
820 RIBBON $ 2.00 
825 RIBBON $ 2.75 
GEMINI RIBBON $1.75 
SP-80 RIBBON $8.00 
EPSON RIBBON $4.50 
C.ITOH RIBBON $5.00 
CALL FOR MORE INFO 


SHIPPING: 5% AIR, APO, FPQ: 8X COD WELCOME IN USA: ADD $2.00 





















Designed and Printed by Phyllis Evans 
Using PRINT SHOP and HOMETEXT 















































A TECHNICAL VIEW 
OF THE CES 

by Todd Meitzner 


My primary reason for going to the Consumer 
Electronics Show (CES) was to see what was in 
store for Atari* Although Atari didn't seem to 
offer any new hardware additions to the 8-bit 
computers, others did* ICD was there with 
their "US Doubler" for the 1050 disk drive, 
which allows you to use true double density on 
your 1050* It comes with their SpartaDOS 
Construction Set* Also shown by them was 
their clock card which plugs into the cartridge 
slot (it still allows other cartridges to be 
plugged in as it includes a cartridge jack at its 
far end). It is supported by their SpartaDOS 
for time dating of disk files. 

Although it is not out on the market yet, 
BATTERIES INCLUDED had their 80 column 
board working on their Atari* The display was 
shown on a green screen monitor. It plugged 
into the cartridge port and was about the size 
of a normal cartridge. I couldn't see if 
another cartridge could be plugged into it. The 
only bad part is that it will work on only the 
XL and 130 XE series computers (it seems 
there are some timing differences from the old 
800/400s). 

MPP was there sharing a booth. They showed 
off their line of products. While the literature 
on their hard disk interface hadn't arrived, we 
were able to get some information out of them. 
The entire package included the interface to 
the computer (an XL or 130XE), a SASSY 
interface to the hard disk, and the 10 
megabyte hard disk. The price for this was 
under $1000. The DOS they preferred for the 
hard disk was OSA+ 4,0. They also indicated 
that the interfaces may be available separatly. 

Telsys Computer Peripheral Products were 
there showing their printer interfaces. The 
one we saw also was able to dump the control 
characters in both their graphics form or in 
another form (e.g. A A = Control-A). The price 
on the literature was below $60.00. 

Although they were not there (I didn't see 
them) some literature was left in Atari's room 


from Quantum Microsystems, Inc. about their 
Q-Modem. It's a direct connect modem for the 
8-bit Atari computers. It connects through 
the serial port and is also powered by it. It 
comes with its own software and is capable of 
auto-dial and auto-answer. They even claim 
to have a 1200 bps option board for it. 

Unlike the 8-bit computers Atari did have 
some new hardware for the 16-bit ST 
computers. Atari in addition to showing the 
520ST also showed the new 260ST. 

The 520ST will be the computer store version 
and will most likely retain the operating 
system totally in RAM. It has to use either an 
analog RGB monitor or Atari's high-resolution 
monochrome monitor and has to use an external 
1 or 2 sided disk drive (2 sided available 
later). 

The new 260ST is the mass market version and 
has the operating system in ROM. Unlike the 
520ST it has a TV interface but is also able to 
use the monitors. It also has a built-in single 
sided disk drive. The power supply is also 
built in. It will be available sometime after 
the 520ST is introduced. 

Atari also mentioned that the 15 megabyte 
hard disk would be available for the ST 
sometime late this year. 

As to other companies supporting the ST 
series, there were several. Haba Systems, a 
maker of software for the Macintosh, intends 
to port all its present and future products 
over to the ST. They make among other things 
word processors, file managers, electronic 
speedsheets, and communications software. 
They are also coming out with both 10 and 20 
megabyte hard disks and a 1200 bps modem. 

Also in Atari's room an independent company 
showed off the Compact Disk (CD) interface. 
They had on the CD an encyclopedia which they 
could access through the ST. Among other 
things it was capable of cross referencing an 
entry through many different subject headings. 

A number of companies were coming out with 
software on the ST, although unfortunatly 
others took a wait and see attitude. Among 
the former are Batteries Included, which will 


write in GEM for both the ST and IBM, Sierra 
On-Line and SubLogic which will be coming out 
with some games for the ST, Infocom (yes, Zork 
will be available on the ST), and others. 

Other details of the ST were also talked about 
in the Atari room* Although Atari doesn't say 
they will expand the memory of the ST 
computers, they say there is nothing in the 
operating system to prevent this from being 
done, 

Initial systems will come with Logo, While 
it's good at graphics and recursion, don't 
attempt to write a terminal program in it. 

Forth was there and was booted up in a demo 
mode, It seems to be a 32 bit version of Forth 
and of course supports the grahics, They still 
didn't know if it would be released, though. 


An alpha version of GEM-write was on a disk, 
however I didn't see it up and running, 

Someone said that another version of "C" was 
just ported over from the Macintosh and was 
much easier to use, 

No word yet if the development package would 
be available to the ordinary user. It was said 
that the information was too technical and 
that it may be rewritten for the ordinary user. 

It appears that the ST can be hooked into a 
network. This can be done through one of 
three ways* through the serial port (9600 
bps), through the MIDI interface (about 70k 
bps), or through the hard disk interface (1,33m 
bps). The last is by far the fastest and looks 
to be promising. 


/SA. A.C..E-. 
U 
£ 

U 

fA 


Exhibit 

Most Early Attempts at elsctrical. 
tHHMCMCHT ft, MANS OTATCONAL 

ABILITIES ENDED in dismal,OFTEN 
TRAGIC, Results. 



copper )? 

EAR-INSERT _ 

ELE.CTRODESJ ® 

Acme electro-neural 
enhancer 
CA. 18*18 


OH 16H-VouTASB. 




— 








4 





nmm soon 

FBOm CESi 


PRINTER DRIVER CONSTRUCTION SET 
THE ADVENTURE CONSTRUCTION SET 
HINDWHEEL 
ESSEX 

BLUE MAX 2001 
PAPER CLIP 
KENNEDY APPROACH 
TURBOPRINT STA 

(INTERFACE TO PRINT ATARI GRAPHICS) 
GUNSHIP 
ACROJET 

SILENT SERVICE 


130 XE’S IN STOCK NOW 
•169.95 INCLUDES SUPPORT SERVICE 


M 




AOJU 


)\\ 


la 





FfWULV COmPUTEfi CEtlTER 

YOUR ATARI CONNECTION 
FOR ALL YOUR COMPUTER NEEDS 
BERKLEY, MICHIGAN * (313) 543-0520 





























































MAGIC LANTERN 

by Richard Q. Fox [72356*242] 

Lee C. Zion [70155*656] 

Bob Geayer [71425*463] 

Doug Lange [74365*610] 

& Tom McComb [72456,1042] 

43K and BASIC required* printer optional. 

Reviewed by Ann McBain Ezzell 


There are a lot of public domain programs 
floating around on local and national bulletin 
boards? some of them are obviously amateur 
and some are of professional quality. MAGIC 
LANTERN, in spite of a few problems with 
error handling, comes closer to the latter 
category than the former. It does what it sets 
out to do* and it does it well. What more can 
you ask of a program? 

This program serves two purposes? it allows 
you to set up a “slideshow" of pictures created 
with the Atari Touch Tablet or Koala Pad, and 
it also lets you dump your pictures to a 
printer. The screen dump works just fine on 
my Gemini-10 printer? the control codes to set 
up the printer are written in such a way that 
they could easily be tailored to fit your 
machine. 

MAGIC LANTERN is easy to use? after you 
see a title screen, you choose a disk drive 
from 1-4 for loading the pictures. The 
program will only accept numeric input in the 
proper range, but does not have any provisions 
for attempts to read from a drive which is not 
available. For example, if you respond "2" but 
only have one drive turned on, the program will 
end with an error. This is one of the little 
glitches which could and should have been 
smoothed out. 

After you choose a drive, MAGIC LANTERN 
will read the disk directory and list all files 
having a ".PIC" extension. You can hit <ESC> 
to view all of the files, or use the cursor and 
<RETURN> keys to select certain ones. 
Pushing the space bar starts the show. While 
one picture is one the screen, the next is being 
loaded into an alternate screen memory area. 
The first picture "fades" (rather abruptly, but 
it fades) into the second one, then a third 


picture is loaded into the first screen memory 
area. This display flipping means that you 
don't have to sit and watch the picture being 
loaded in like you do with Microlllustrator 
(the software which comes with the Touch 
Tablet and Koala Pad). 

While the program is cycling through the files 
on the disk, you can use the <SELECT> and 
<OPTION> keys to pause and restart the show, 
or you can return to the main menu by pressing 
<START>. This will let you switch to a 
different picture disk. Switching disks 
without returning to the menu, will cause the 
program to look for the next file on the 
previous disk and halt with an error message. 

You can also print the current picture by 
pressing "P". There is an error trap here, but 
it doesn't tell you what is causing the error. 
When the print routine encounters an error, 
the program simply returns to the main cycle 
and loads in the next picture, leaving the user 
to figure out what is going wrong. 

I can't fault the printing routine itself, 
though? it's the best one I've found so far for 
this picture format. I have used PrintWiz by 
Allen Macroware, which offers a variety of 
picture sizes, shapes, and graphics modes, but 
does not handle colors well. (Indeed, the 
documentation states that PrintWiz does not 
"stress color interpretation".) MAGIC 
LANTERN, on the other hand, not only has 
distinct shades from white to black for each of 
the four color registers available in the 
Microlllustrator format, it also "sorts" the 
color registers according to luminance and 
color so that the brightest color in your 
picture will be white on the printout and the 
darkest will be black. The only other screen 
dump I have seen for Microlllustrator pictures 
simply assigns white, black, light and dark 
grey to the color registers and leaves it to the 
user either to draw pictures that will print out 
acceptably or delve into the BASIC listing to 
change the color assignments. Clearly, MAGIC 
LANTERN'S solution is the more "elegant". 

The picture on the following page was printed 
with MAGIC LANTERN, which is available on 
several local BBSs and from the MACE disk 
library. Direct comments to the authors via 
CompuServe (accounts listed above). 







rtnltfrnnn 

•« ^;tSLCu;kfetfittKr?;K}trm5?iK’ rtRM^r.ir^.Tm^Bn^fJSRJn 


1 


RPRS»gRRrpjr«ni:r ! r??:.f: : ..iiL>: ■ 


Mrm;Bii8!mm!C«riiKRi?s5rv i. 


snritr.if miPKitfpftRWfft • /A &tK?ft : mwmitrr#M£i. : « 
nrrrrrrpr n'fiP'tfRsrfS'frr w ? ■ i;r-r:i.-««**f?*• lur?i.!• 

•htr«;wmrBi-;r j ;;rfTfr.r' wwa wr? RmTCittifc:* 

iwrreiimf f rmwRi'WH- ww/a ■ 1,1 1 imumiM 1 J 
rtrr: mimnmmmMMttftttmimm-Mimvkkiv 
!!?rrrnr“ wa<v/wa .HHfcBtrr v 

! rjir-rras- ww.v.v.v.va !-!-;:!'n:!,!i» h; :nt; v 
r»<rfw*m .? :pi r:rnn * w/wwv//M «?mw«i&iMifRffG» ^.v 
nMinm^rf-rn n.; tr .w.v.v.w.rv.w fisstsaiJBiHtHmiB?®/* 
rrn:tf i:-; m ;«u -i f»» »wwaw/w/isri at 

r);!.«r w ; n w 

;.«igr?;i«if.j 

i«f ?,s ww.vwwww/. ■ v-ii-Nrri^^n'nit: ■!;?: .v 
tnU:i r'' ; "(«n-i : i?vw/.ww/ ■ w. 

*t M-M M’-r- Hi !■: HiW/WWW. / I WV 

;;; n ; '; ■;.;; r ; «;• ( .v.mv.v * av. 

• ? i} t! !>!■:;. }:( - vwm/ WW ww 

mm ?Hi:fr? h;'h: }. '■■ h WiVA’iVw «w, mtuiwtmtfir■ .vw 

■' >•• n • w/wwwwwtfw. ' »av.v 

»;rN&- .w.w*w 

■wms+swi-mi f iAv.v.vw.mvwA «;»:&* v.m 5 w 

i p: 6 ? Efi lvil i ilf-AVrtWWrtA/AVW^ ^ t V/WWAA’ 

tti irn-rw nr r to r • ,v.v.v.v.v.v.v.w.v.v < ra? ft avav.vw 

ntHtpnnfJwrsvwwwwwwwww/ -sirs vwww 

i'tti VWJWAWJVAWAf iiiirf * WiWAV 


I 


. «. \ *•« \ ■*, ■% •% ■*# 
> > > > > 

. \ *t \ v \ v ••, \*J. **, •*. \ *\ ••. 
>>>><. </. 1 -1 <.<. <.<. <. < 


MkUU ** i.UiJ. M E: /.V.V.V.V.V^WWW*:fm; WWm, 

tm.u & * ;• ; s> * w.v.v.v^.v^mv^ f wwmA 
m, : i ,vwwmwww.v^«r vwm.v.v, 
iw^.v.v.vww.ww^.v/ ='iww.mw 
I:;iin j *' I ■> V/WWWWWW.WWW. : i VWW.V.V 

*Hi«*&£!>»> u.» w«v.vw.vwwmv. 

i & ^, i r, - it.; .mv.v.v.mv.v.mv^ . v.w/w.w 
*:'!,*:• r.: r w ?.^mv.v.v.ww.v.vww ^.vmv.v 

M ; ; .W.VV^.V 

$ f 5. f j j ;; 

fS ; U;< H f Li V.V.V.V.V.V. & «W.V^iV.V^.Y.W^iW^.V . 3 

* >,U4 I;fcLb 

-*W v. 3 .w # 3 

WttWJWi 

vwm 

*mA* WVrfW.VWV 

...V. 3 .. . V.V.V.V 


«i*L* V» 3 .W ! 



....... v v.mv 

WfM Fj W^.V.V 


/ VW/W/i 

r rv.w^.v 

F V. 3 ^.V.V 
i/- 3 4.W^J 

iVi 3 - 1 3 . w.v 

fV f*..v.v. 
“At .ww 
r'J. .w.v/ 

fwZ k *MMn 

mv^.y 


s 


w.ww.vr 

ifr:u • ■ ^.wmv 

i,r, .v. i • ' v.ww.^ 

lli V.V.ViVi 5 . ■■■■Ilia nil ■ ■ VWaV^aVi 

■[Mi V.V^.VmV^mV.VW^.V.'WW.. VMftWW 

^ .w^.v.v.v.v.v.v.v.viw^wwwmv. • www 
r, i www w ww w*w w wvw.mmww 
ftVWWWWWWWWWWWWWWWWW 

- ;j 5 5 5 5 5 5 SI)jmiJ ^5 J J ® 5 & »J» 5 _P_ 3 J> 5 J>_ 5 J>J>_> & S fr » &_& >» * ' 


1 



rrrrrrrrrrrrrrrrrrrrrrn 


rwimrrfffifirii 


— OQ — 


i 








PAGE ZERO 
by Ann McBain Ezzell 


This month I'm going to tell you about some 
memory locations that you might find useful 
when writing your own programs or trying to 
understand someone else's. I'll start, of 
course, on page zero and work my way up. 

16 ($10) FOKMSK 

Handles POKEY chip interrupts. Bit 7 set 
indicates the BREAK key is enabled! you can 
use this location along with 53774 <$D20E) to 
disable the BREAK key. Set up a subroutine 
and do a GOSUB to it after every GRAPHICS 
command! 

100 IF PEEKG6X128 THEN RETURN 
110 POKE 16, FEEK(16)-128! POKE 53774, 
PEEK(16)J RETURN 

77 ($4D) ATRACT 

Attract mode timer and flag. You have 
probably noticed that most programs will start 
cycling through screen colors if no keys are 
pressed for a while. This is built-in 
protection for your monitor or TV screen. 
ATRACT is set to 0 each time a key is 
pressed, then incremented every four seconds 
during the vertical blank. When the value 
reaches 127, it is set to 254 until attract mode 
is terminated (usually by a keypress). You can 
force your Atari into attract mode with a 
POKE 77,128 command. Alternately, you can 
prevent attract mode from taking over during a 
joystick-driven program by periodically 
executing a POKE 77,0 command. 

82, 83 ($52, $53) LMARGN, RMARGN 
Left and right text margin columns. These are 
initially set to 2 and 39, and only affect 
GRAPHICS 0 and the text windows. You can 
squeeze more characters into a logical program 
line (three physical lines) by setting LMARGN 
to 0. RESET returns to the default values. 

84 ($54) ROWCRS 

Current graphics or text screen cursor row, 
from 0 at the top of the screen to a possible 
maximum of 191 at the bottom (GR. 8). You can 
POKE 84 to set the cursor where you want it 
on the screen, or FEEK(84) to find the cursor. 


85,86 ($55,$56) COLCRS 

Current graphics or text screen cursor column, 
from 0 at the left side to a possible maximum 
of 319 at the right (GR, 8). The value is 
stored in low byte, high byte order, so location 
86 will always be 0 in modes other than 8 
(because the other graphics modes have a 
maximum of 160 columns, 0-159). 

88,89 ($58,$59) SAVMSC 

Holds the address of the beginning of screen 
memory in low/hi byte order. You will often 
see SAVMSC used in programs which load and 
save screen displays. You can also calculate 
the address of screen memory (PEEK(88) + 
256#PEEK(89)) and use it as a reference to 
PEEK or POKE directly into screen memory. 

106 ($6A) RAMTOP 

The size in pages (1 page - 256 bytes) of RAM. 
In a 48K machine, this location will hold a 
value of 160. You can POKE RAMTOP with a 
lower number to set up a (more or less) safe 
area for such things as redefined character 
sets, player/missile graphics, and so on. 

186,187 ($BA,$BB) STOPLN 
The line where the program was stopped 
because of an error, BREAK, STOP or TRAP. 
You can use this number to write your own 
error messages. 

195 ($C3) ERRSAVE 

The number of the error which stopped or 
TRAPped the program. (See May and June '85 
Journals for explanations of error codes.) 

559 ($22F) SDMCTL 

Direct Memory Access (DMA) enable, This 
register is used when setting up 
player/missile graphics. You can also use it 
to speed up your program execution by about 
30% by setting it to 0, which will blank the 
screen until you restore its value (PEEK it 
first to make sure you reset it properly), It's 
a good idea, though, not to put in the blanking 
command until your program is completely 
debugged? pressing RESET to restore the 
screen display will also erase any error 
messages. 

That's all I have room for this month - I hope 
to be back next time with more information 
about useful locations. 


O — 



M* A* C. E. 

MICHIGAN ATARI COMPUTER ENTHUSIASTS 
P.O. Box 2785, Southfield, MI 48037 
BULLETIN BOARDS? MACE 978-1685/MACE WEST 582-0657 
MACE HOTLINE (Information - Voice Line) 882-7104 


PRESIDENT 

VICE-PRESIDENT 

Kirk Revitzer 

Alva Thomas 

Detroit 

Taylor 

882-9109 

287-3512 

CompuServe? 70346,1642 

CompuServe: 74065,334 

BBS: 882-5909 

BBS: 287-4824 

TREASURER 

PROGRAM COORDINATOR 

Burt Gregory 

Scott Garland 

Southfield 

West Bloomfield 

552-0273 

851-9453 

CORRESPONDING SECRETARY 

RECORDING SECRETARY 

Sharie Middlebrook 

Dino Roggero 

Dearborn 

Redford 

581-5560 

BBS: 531-1701 

BBS: 582-0657 


DISK LIBRARIAN 

CASSETTE LIBRARIAN 

Dave Zappa 

Mike Landis 

St, Clair Shores 

Clawson 

773-8551 

589-1789 

BBS:771-4126 

CompuServe} 72675,1023 

MEMBERSHIP CHAIRMAN 

M.A.C.E. JOURNAL EDITOR 

Paul Wheeler 

Ann McBain Ezzell 

Detroit 

Birmingham 

538-3649 

646-4455 


NEXT MEETING: ITS 1 6/85 7100 EM 

Southfield Pavilion—Ten & a Half Mile Road and Evergreen 


M.A.C.E. 

P.O Box 2785 
Southfield, Ml 48037 


$20.00* FOR A ONE YEAR MEMBERSHIP 
(♦Payable to M.A.C.E.) 


M.A.C.E. Membership Application 

Name _Phone_ 

Street _ 

City_ State_Zip Code_ 

Company (if applicable)_ 

System Description _ Disk/Tape 

Suggestions _ 

I can help with ... _ 


( )New ( )Renewal 
If a Renewal: 

MACE n 


Date _ 

Amount _ 

□ Cash 

□ Check Number 


Coupon _ 

. Membership Card Number 
Expires_ 













































S38S8S833S33SSS33S 

ACE 80 & ACE 80 KL " 
80 COLUMN CARTRIDGE 

INTRODUCTORY OFFER - THROUGH JULY 31ST 

ACE 80 (for Atari 800).*49.95 

ACE 80 XL (tor Atari XL, 130 XE, 48K 400).*49.95 

Letter Perfect....(special..*47.50 

Data Perfect......(special).. .*47.50 

Spel 1 Perfect. .... (speci al). .*47.50 

Perfect Utiltity. . (special)....*22.50 


liV 


plus *2 shipping/handling ttt* Michigan add 4% sales tax 


MENTION THIS AD FOR *5 OFF ACE CARTRIDGES ^ft ;vffl . ff 

For more information contact 
Michael Rudy 
MAGIC SOFTWARE 
3398 Seminole Trail 
Monroe, MI 48161 
(313) 289-1823 




MICHIGAN ATARI COMPUTER ENTHUSIASTS 
P.O. BOX 2785 

SOUTHFIELD, MICHIGAN 48037 


tmummtmmut 

$ BULK RATE I 

t U.S. POSTAGE I 
I I PAID I » 

I PERMIT 1232 I 
t STER HTS, HI 48077 > 

tmumtmutmm 


IMPORTANT DATED MATERIAL 
PLEASE DO NOT DELAY