[ Go to Stephen's Entry Page ]
[ TI Book front page   | TI-99/4a articles   | TI Resources Page    | PC99 Review    | PC99 Programs ]
contact - please use subject="pc99 page" to avoid spam trap!

This text is from the magazine from Parco Electric in Honiton, Devon, - issue 3 dated February 1985. A magazine for owners of the Texas TI-99/4A Home Computer, still relevant for anyone with one of the TI99/4a emulations such as MESS.


Jump to:
Programming: Fast Random Number 0-254    |    Call Sound |    Sprites |    Horizontal Scroll
Module Reviews: Popeye |    Fathom
V2.2 console module problems

TI99/4A - Parco Magazine - Issue 3 (Feb 1985)

T199/Aa . . . . Star Turn Viewers of the Television South West program 'Today South-West' may recently have seen a couple of XMAS computer features introduced by local folk hero Dennis Hemminqs.

The idea was to introduce the proverbial man-in-the-street to what is on the market in the way of Home Computers, what it does, and what it costs. Many current machines were on display, and although there wasn't a Spectrum in sight, Krunchers eyes all over the region must have been popping out at the sight of a 99/Aa at the heart of the display. Better than that, in the first of the two slots, our 4a-Superstar not only featured the only 'customized' seasonal program (remember the Xmas-tree in the last issue??) but with the aid of a Speech Synthesizer and TE2 actually spoke a message of greeting into the bargain!

Regular devotees of TSW will be familiar with a delightful cuddly friend called Gus Honeybun, (. . .now where did I put my 12 bore. . .) and the second slot that Dennis introduced played out to a screen from an arcade game which contained aliens that much resembled the charming creature. The arcade game? SUPER DEMON ATTACK!!!

LATE LATECOMERS Thanks to Stephen Meadows for adding a few more names to the list of latecomers to the TI Users Convention.

Mr and Mrs Piner

and their son Al

(groan) Well TI Users seem to be a singularly looney bunch, so how about a few more? Better latecomers than never!

DON'T PANIC!!! PARCO ELECTRICS are now the only T199/4a APPOINTED DEALER, and claims made by anyone else about supposed unavailability of products must be treated as purely unofficial. It has been reported for instance, that PARSEC, among others, cannot be obtained. Well we want to put it on record that we not only carry adequate stocks of this (and most other) items, but could order more tomorrow.

Yes, we admit we have let some of you down at times - it hurts us too - and we don't pretend that there aren't the odd 'hot properties' that sell faster than we can get them; but anyone who has seen our shop (better still our warehouse) will confirm that we are a LONG LONG way from waving the white flag that others are starting to grope for.

Whatever odd items appear and disappear in the meantime, please consult us about stocks in general. Consult PARCO rather than the other commentators, as we share neither their restricted view nor their their morbid readiness to press the self-destruct button prematurely.

Above all, DON'T PANIC!

Keep Krunching

SUPERSKETCH FOOTNOTE We all make mistakes - some more noteworthy than others - but please believe us when we say that any dealer to offer you SUPERSKETCH with facilities to dump to DISK or PRINTER has got his Eproms crossed badly.

We will say no more

PARCO on the road! PARCO plan to get out and about this year, perhaps every month. We will try to visit most areas where we know there are a lot of users, so that you can see the large range of stock that we carry, and sample it for yourself!

A visit to Bedford seems to be a strong possibility on 3rd March.

Hmm. . . . Bedford - now why does that name sound familiar?

Southampton watch out - you could be next.


Go to top of page
Editorial OFF YER BUTT

Well, here we are again, three issues now - someone get Guinness on the phone, if this continues we could break the record for the longest running Computer Magazine.

'Off yer butt?' What happened to the good old British qualities of decency and respect? Well if you think you know an expression that adheres strictly to the rules of etiquette, whilst conveying adequately the sentiment of 'Off yer butt' then I suppose it's 'Answers on a postcard please, etc.'

As far as we are concerned, 'Off yer butt' will do fine as a theme for this issue. Why? Well sometimes it's so easy, having accomplished something, to settle back for a while. Trouble is, it's not as though you then only miss out on progressing further - not when so much of life is pitched on an uphill slope - it's o.k. as long as you keep moving, but stop and you will almost invariably slide back.

Pleasantly surprised though we were with your response to the last issue, we aren't (quite) dumb enough to realize that laurels can be synonymous not only with successes, but also with funerals. Not merely must we maintain the standard we have set, but also strive to improve it. So we are getting off our butts, and how about you? Bet you can think of things you don't like about 99/4a Magazine. Bet you spotted some mistakes. Bet you thought of something that we didn't think of. And you write and tell us? Did you heck - at least, some of you did, about 1.5 per cent of you.

Don't get us wrong we want you to ENJOY your computer, and ENJOY this magazine; but like it or not the rnain reason the TI market is still so healthy is because of ENTHUSIASTS. People who get their teeth into it, fall in love with it, rave about it, write about it, sell it - people who get 'Off their butts!

We have enough programs and subjects for reviews and features to fill plenty more issues of 99/4a, but we got higher aspirations, man! We want your input, your questions. We want you to see the impact that YOU can have not only this mag., but the others as well. TI fans have a history of making their voices heard, but history was yesterday. For today and tomorrow we have one message:

'OFF YER BUTT!'

FUNCTION and QUIT

Letters Dear Sir,

I have just received the December issue of 99/4a magazine, and very welcome it is too, however if this is the third issue I have not yet received issue number 2.

Having got the complaint out of the way I would like to congratulate you on an excellent publication. Yours Faithfully, J.C.Dowson

With this issue, we hope at last to have cleared any confusion. On the cover you will see the date and number of the magazine, and will be pleased to note that you have not missed an issue. (Ed.)
=================
Dear Sir,

In the latest edition that I received various adventure programs were mentioned by Scott McMartin as being available in the U.S. for the Tl. I am referring in particular to ZORK I,II,lII by lnfocom. I assume you are not likely to be stocking any of their programs, so perhaps you could give me some information on where I can get hold of them

Stan Dixon

The address of Infocom INFOCOM INC PO BOX 855 GARDEN CITY NY 11530 USA
=================
keep up the good work, we intend using the TI for a few more years,

Ray Fearn
=================
Dear Sir,

your edition of the 99/Aa magazine is just what we need, congratulation. I look forward to future issues.

yours sincerely Rose Finch
=================
I have received your Parco Magazines both of which I have found informative and interesting J.S.Lyons
=================
I received your December Mag for the TI99/4a, excellent, Mr W.Fairbairn
=================
Dear Sirs,

Thanks for a very good magazine, please find payment for the rest of the year's copies.

I thought the magazine was a little expensive although I suppose starting a magazine for a minority group can't be a cheap business .....

Lawrence Gray

Hole in one! (Ed)
=================
Dear Sirs,

Congratulations on your last issue of 99/Aa magazine - the programs were excellent. The review of M*A*S*H was good and the overview of MINIMEM has persuaded me to save up for it - however long that may take!!

File processing has always bewildered me until I read your article, which, although basic, set me on my first step toward file programming.

A friend of mine who owns an Electron (ugh!) received a shock when I told him BBC BASIC was not the only BASIC with named procedures, during one of the "My computer's better than yours" sessions, Ha Ha!

The computer is excellent, but I don't know anyone in my area who also has a TI. If you have the address of any 99'er living around about Uckfield or Crowborough, I would be most obliged if you could put me in touch!

Looking forward to the next issue; well done,

Yours faithfully, Stephen Meadows

Stephen put almost as much content in his letter as we have put into the whole magazine! We have printed a small part of it here, and you will see various contributions scattered among our pages. At risk of making Stephen big-headed, we would like to commend him for getting 'Off his butt'. (Ed.)


Go to top of page

Gloss-arry (The title is a punn-itive play on the name Harry Pridmore)

We've all got computer books and magazines that include in some shape or form a "glossary". This would usually consist of a list of familiar terms, with complicated explanations provided just to baffle you.
Not to be outdone, we have decided to include our 99/4a glossary. Not for us, however, the usual boring yard of jargon - oh no, we prefer to offer you a much more down - to - earth approach .....

ADDRESS: the place where you spend every possible minute typing-in programs.
ARGUMENT: what you get when she discovers you will spend tonight typing in programs
ARRAY: what you shout when you type in a program and it runs first time.
BAUD RATES: the time it takes 'er indoors to get fed up while you type in programs.
BOOTSTRAP: what you will see if you spend tomorrow night typing in programs.
BUFFER: plates of cold food dumped on the table while you type in programs.
BUG; found both in tonights program and in the remains of last Tuesdays buffer.
BYTE; just about all you took from the buffer described above.

CASSETTE: something that she used to play Beach Boys tapes on.
COLOUR COMBINATIONS: this is what she wears in a vain attempt to distract you.
CONSOLE: this is what you will have to do to her tomorrow with the aid of some flowers.
CURSOR: someone who wants to type programs when someone else wants Dallas.
DEBUGGER: quaint title you inherit if 1 second of Dallas is lost
DIM STATEMENT: "surely you could miss one episode?"
DISK: remember you slipped one last time you moved the tv in a panic for Dallas.

EDIT: what you have to do to your language at such times.
ENTER KEY: must remember to get a copy made just in case.
FUNCTION: Great! it's Bingo night!
GOTO STATEMENT: you'11 get a lot of these
HARDWARE: could be a reference to the frying-pan.
HERTZ: could be a reference to the effect of a frying-pan.

IF-THEN- ELSE STATEMENT; "IF you Love me THEN leave that computer ELSE .... "
INTERFACE: where you will get the pie
LOW LEVEL LANGUAGE; she will probably have to resort to this in the end.
MODE: what the lawn would be if you weren't so busy.
MULTIPLE STATEMENTS; the form in which low level language is delivered.
NOISE CHANNEL: her face
NUMERIC EXPRESSIONS: ". . .for two pins. . .one last chance. . .in five minutes. ."

OUTPUT: what happens to the cat now may one day happen to you.
OVERFLOW: another thing that would have been seen to if you weren't so busy.
PORT: if she likes it, then a bottle won't go amiss
PROGRAM : "Dallas"
PROMPT: ". . .starts in 3 minutes"
RECORD: She didn't watch it
RELATIVE EXPRESSION: ". . .my mother "
RETURN STATEMENT: ". . .back to my mother "
RUN COMMAND: ". . .mother is coming

SOFTWARE: for him: 32k for her: 36b
SPACE BAR: where Aliens get drunk
SPECIAL FUNCTION KEY; it opens the cabinet that allows you to get drunk.
SPLIT KEYBOARD; what you get when you fall over on it.
USER; her brother is on the dole
USER FRIENDLY; he wants to borrow a fiver
USER PORT; the pub where he spends your fiver.
VARIABLES: her moods
WORD PROCESSOR; yet another name for her (She'll probably still get the last one yet!)



Go to top of page
Random For EXTENDED BASIC or MINIMEMORY

If you would like a quicker way to get a random number between 0 and 255, instead of using the BASIC RND function use RANDOMIZE followed by CALL PEEK (-3l808,N) where the value returned in N is the random number.

100 FOR N=l TO 100
110 RANDOMIZE
120 CALL PEEK (-31808,A)
130 PRINT A;
140 NEXT N

functionally the same as:

100 FOR N=1 TO 100
110 PRINT INT (RND*255);
120 NEXT N


SOUND ADVICE FINDING YOUR FREQUENCY

Well hi there all you sound freaks, did you have a groovy Christmas?

It appears that many readers of 99/4a are keen to develop their music and sound-effect skills, so here we are again.

In this article it seems appropriate to begin by tackling the subject of frequencies. In layman's terms they may be called 'notes'. In a future issue we will look at how the 'noise' generator of your computer can produce weird and wonderful results, but for now we will content ourselves with the 'musical' frequencies in the CALL SOUND subprogram. Of course, using these notes it is still possible to create sound-effects as well as music, as you will see.

Taking Notes

Basically, you can use any value between 110 and 44733 Herz (see your User Reference Guide p.88) to indicate the frequency desired in a CALL SOUND subprogram.

110 represents the lowest note available to you, and 44733 the highest; although probably the dog is the only one who will hear the latter.

The format for a CALL SOUND command (excluding a noise channel) is as follows-

CALL SOUND(duration,frequency1,volume, frequency2,volume,frequency3,volume)

As you can see, you may specify up to 3 simultaneous notes if desired, each of which may have a different volume. The whole command is affected by one 'Duration' variable as well.

We will take a closer look at volume and duration elements in future issues, but in the meantime you will find the relevant info in the User Guide.

Although you may, as mentioned, include 3 notes in one command, the most rudimentary use of CALL SOUND as in the following example, which plays one fairly high-pitched note at the maximum volume for just 10 Ms., which is very brief.
(2015 additional note: for technical reasons the minimum note actually played will probably be 17 Ms)

CALL SOUND(10,3000,0)

In order to demonstrate more fully the option for 3 notes you will find the following program useful.

100 CALL SCREEN (2)
110 CALL CLEAR
120 PRINT "SOUND ADVICE TUTO
RIAL": :"This is an exercise
in"
130 PRINT "the use of freque
ncies in a CALL SOUND statem
ent.":" Enter three frequenc
ies"
140 PRINT "plus duration and
volume"
150 PRINT "of your choice wh
en prompted":"by the program
and the notes":"will be pla
yed. Meanwhile"
160 PRINT "the relevant stat
ement will be displayed on-s
creen.":" For the purposes o
f this"
170 PRINT "exercise the same
volume":"setting will be as
signed to":"al1 three freque
ncies."
180 PRINT "INPUT FREQUENCY 1
":"(between 110 & 10000)":"y
our choice";
190 CALL SCREEN (11)
200 INPUT A
210 A$=","&STR$(A)
220 IF (A<100)+(A>10000)THEN
180
230 CALL CLEAR
240 PRINT "INPUT FREQUENCY 2
":"(between 110 & 10000)":"y
our choice";
250 INPUT B
260 B$=","&STR$(B)
270 IF (B<100)+(B>10000) THE
N 240
280 CALL CLEAR
290 PRINT "INPUT FREQUENCY 3
":"(between 110 & 10000)":"y
our choice";
300 INPUT C
310 C$=","&STR$(C)
320 IF (C<110)+(C>10000)THEN
290
330 CALL CLEAR
340 PRINT "INPUT DURATION":"
(between -4250 & +4250)":"yo
ur choice";
350 INPUT D
360 D$=STR$ (D)
370 IF (D<-4250)+(D>4250+(D=
0) THEN 340
380 CALL CLEAR
390 PRINT "INPUT VOLUME":"(b
etween 0 & 30)":"your choice
";
400 INPUT E
410 E$=","&STR$(E)
420 IF (E<0)THEN 390
430 CALL CLEAR
440 PRINT : : :"FREOUENCY 1= "&STR$(A):"
FREQUENCY 2= "&STR$(B):"FREOUENCY 3= "&S
TR$(C)
450 PRINT " DURATION= "&D$:" VOLUM
E="&STR$(E) : : : : : :
460 PRINT "------------- --------------"
470 PRINT "CALL SOUND("&D$&A$&E$&B$&E$&C
$&E$&")"
480 PRINT "------------- --------------"
490 PRINT : : : : : :" ANY KEY TO CON
TINUE": " function/clear to end"
500 CALL SOND(D,A,E,B,E,C,E)
510 CALL KEY(0,K,S)
520 IF S=0 THEN 510
530 CALL CLEAR
540 GOTO 180
550 END
In general, if your interest is in producing music, then you will either be using single-note melody lines, or creating harmony or chord variations selecting frequencies carefully from the table on p.89 of the User Guide.

In order to build a complete piece of music it will be necessary to string together a series of CALL SOUND commands. If you do this literally one by one you could obviously finish up with a very long and inefficient program; by far the best bet is to construct a FOR-NEXT loop with DATA statements.

Go to top of page

The following program includes such a loop, and is a fairly straightforward demonstration of how a sense of rhythm can be achieved, as well as providing chords as a backing to the tune.

100 CALL SCREEN( 5)
110 CALL CLEAR
120 FOR I=1 TO 4
130 CALL COLOR(I,11,1)
140 CALL COLOR(I+4,9,1)
150 CALL COLOR(I+8,16,1)
160 NEXT I
170 DIM W$(16),X(16),Y(16),Z
(16)
180 FOR I=1 TO 16
190 READ A,B,C,D$
200 X(I)=A
210 Y(I)=B
220 Z(I)=C
230 W$(I)=D$
240 NEXT I
250 FOR J=5 TO 1 STEP -1
260 FOR I=1 T0 16
270 CALL SOUND(J*100,X(I),8,
Y(I),8,Z(I)0)
280 CALL HCHAR(24,I+5,42)
290 DISPLAY TAB(I+2);W$(I):
300 NEXT I
310 NEXT J
320 FDR I=1 TO 500
330 NEXT I
340 CALL CLEAR
350 END
360 DATA 262,659,392,"FEED",
196,698,392,"",165,784,262,"
THE",196,523,262,""
370 DATA 175,880,440,"WORLD"
,220,698,440,"",196,784,392,
"",165,523,392,""
380 DATA 175,880,440,"LET",1
75,698,523,"THEM",165,784,39
2,"KNOW",165,523,330,"ITS"
390 DATA 147,880,349," chr
istmas",147,784,330,"-----
----",196,698,294,"TIME",196
,659,262," "
400 END
* 'DON'T THEY KNOW IT'S CHRISTMAS' (BAND AID) reproduced by permission of Chappell Music Ltd (MCPS).

Kurves for Kangeroos and Kosmic Krying

In order to use the tone channels of your computer for sound-effects, there are a few tricks of the trade. Again the rnost common one is the use of loops, as is picking simultaneous notes with very close frequencies. In conjunction with loops, one of the most useful tricks is to increase or decrease volume settings, either rapidly or slowly, resulting in fade-ins or fade-outs.

Your imagination will suggest the possibilties at your fingertips - bombs, planes, fireworks, etc., etc. (After all, that's the stuff that educational and business programs are made of, isn't it? -Ed.) One very effective device is to 'curve' your notes. Some example programs are included here for your entertainment and education. The first sounds rather like a kangaroo bounding down a corridor:

100 F=130
110 FOR I=0 TO 30 STEP 5
120 F=F+2
130 CALL SOUND(-100,F,I,F+3,I,F+6,I)
140 NEXT I
150 GOTO 100

This variation suggests that the first kangaroo's baby somehow got out of its pouch:
100 F=130
110 FOR I=0 TO 30 STEP 5
120 F =F+2
130 CALL SOUND(-100,F,I,F*3,I,F*6,I)
140 NEXT I
150 GOTO 100

The next two are variations on the above, this time with certain features 'reversed':
100 F=130
110 FOR I=30 TO 0 STEP -5
120 F=F-2
130 CALL SOUND(-100,F,I,F+3,I,F+6,I)
140 NEXT I
150 GOTO 100


100 F=130
110 FOR I=30 TO 0 STEP -5
120 F =F-2
130 CALL SOUND(-100,F,I,F*3,I,F*6,I)
140 NEXT I
150 GOTO 100

Developing the same basic structure, some interesting results follow; the first of which resembles the sound of aliens who got lucky on their cosmic pools coupon, but just realized they forgot to send the coupon off:
100 FREQ=INT(RND*500)+500
110 FOR VOL=30 T0 0 STEP -3
120 FREQ=FREQ-4
130 CALL SOUND(-100,FREQ,VOL,FREQ*2,VOL,
FREQ*4,VOL)
140 NEXT VOL
150 GOTO 100


More interesting variations on a theme finish this particular session on sound.
100 FREQ=INT(RND*500) +500
110 FOR VOL=0 TO 30 STEP 3
120 FREQ=FREQ-4
130 CALL SOUND(-100,FREQ,VOL,FREQ*2,VOL,
FREQ*4,VOL)
140 NEXT VOL
150 GOTO 100

100 FREQ=INT (RND*500) +500
110 FOR VOL=0 TO 30 STEP 3
120 FREQ=FREQ+4
130 CALL SOUND(-100,FREQ,VOL,FREQ*2,VOL,
FREQ*4 , VOL)
140 NEXT VOL
150 GOTO 100

100 FREQ=INT(RND*500)+500
110 FOR VOL=30 TO 0 STEP -3
120 FREQ=FREQ+4
130 CALL SOUND(-100,FREQ,VOL,FREQ*2,VOL,
FREQ*4 , VOL)
140 NEXT VOL
150 GOTO 100

* 'DON'T THEY KNOW IT'S CHRISTMAS' (BAND AID) reproduced by permission of Chappell Music Ltd (MCPS).

The purchaser of this computer program may only reproduce the work for the sole purpose of the purchaser's private and domestic use. All other rights of the owners of the musical (and associated literary) works reserved.


Go to top of page

Bright Sparks SPRITELY SPRITES
(Requires EXTENDED BASIC)

In true style of the new-look 99/4A magazine, here's another article to tanatalize your krunch buds.

WHAT IS A SPRITE? Well a sprite is a character that you give a color, shape, and most importantly a speed and direction. Not only that, there are 49,000 possible locations on the T199 that you can place one. And not only is there one: you can, in EXTENDED BASIC, BASIC have 28 of them at once. Now we have your interest let's learn what you can do with them and what tricks you can use in your own programs to give them that professional look.

When a sprite is first defined, you give it a number - this gives a 'priority' to the sprite, ie, when a sprite of number 2 passes a sprite with a number 1 then the lower number sprite will pass over the other.

Before we start with the examples here's some tips on using SPRITES:-

1. ALWAYS use the LOWEST Sprite numbers for the sprites that you have in motion or that you will be moving. This is because EXTENDED BASIC will update the position of each sprite that is in motion - therefore, if you have sprites number l and sprite number 28 only in motion, then EXTENDED BASIC will also check all the sprites between these two to update positions, which of course takes a little of that precious time.

2. Try not to define a sprite off the screen, i.e. with a dot row value greater than 192. This is best illustrated by running the following small program.
100 CALL SPRITE(#1,42,2,100,100,-2)
110 CALL POSITION(#1,X,Y)::DISPLAY
USING "####":X::GOTO 110

3. When checking for a few coincidences with a sprite I've found the best way is to use CALL COINC(ALL,C) then branch to another routine to see which sprites have hit, then to a routine to determine the outcome of the coincidence. See example number #6

4. If you are defining sprite patterns using CALL MAGNIFY 3 or 4 remember that your character number must be evenly divisible by 4 i.e. you can use character number 100 but not 102, as 102 is not evenly divisible by 4.

5. Due to the limitations of the VIDEO chip you are only allowed a maximum of 4 sprites on a horizontal line, but as many as you like vertically. If there are more than four sprites on a line, then sprites numbered higher than the fourth sprite will become invisible. You can find the number of the 5th sprite on a line by using the following:
100 CALL PEEK(-31877,C)::IF
C AND 64 THEN S5=C AND 31+1
::PRINT "5TH SPRITE IS NUM
BER";S5

6. If you have the 32K RAM you can freeze all sprites instantly by using the following statement which disables the sprite interrupt routine.
CALL LOAD(-3l806,64)
And then make the sprites move again use:
CALL LOAD(-31806,0)

NB. Don't forget you need to have a CALL INIT statement somewhere before any reference to a CALL LOAD command otherwise you will get a SYNTAX ERROR

7. Some of the EXTENDED BASIC Commands and statements allow you to do the same thing many times.
For example you can define many colors, e.g.:
CALL COLOR(#2,12,#3,4,#5,6,#7,8)
or define more than 4 characters on one CHAR statement e.g.:
100 CALL CHAR(100,RPT$("F",6
4),104,"FCFCFCFC5F6F46F"&RPT
$("FC",8) ,106,"010101010101012")

Use these as much as possible as it saves memory and also increases the speed of the program. Likewise putting as many statements on a line as possible, although making the program harder to read, will increase the speed of the program. (Very useful when writing games). You need all the speed you can squeeze from the TI!

Other tips for increasing the execution speed on your program are:

Keep the names of your variables as short as possible.

Variables such as A run faster then array type variables such as A(2)

Us as few GOTO and GOSUB statements as possible, try to make your program follow a 'STRAIGHT LINE' whenever possible.

Now you have some insight into getting increased speed from EXTENDED BASIC, here’s a few examples of how to use SPRITES.

100 REM SPRITE PROG #1
110 REM 99/4A MAG
120 REM EXAMPLE OF ANIMATION
130 REM
140 CALL CHAR(92,"000001010F
090909010101013E200000C0C4C4
FCC0C0C0C0C020100808102030")
150 CALL CHAR(96,"0101031F13
1313030303033F20000000808888
88F88080808080000080402030")
160 CALL CHAR(100,"000001010
70909050101010106181000C0C0C
2F4C8C0C0C02010080810203")
170 CALL CHAR(104,"000001010
70503010101010102020203C0C0C
0E0E0F8C0C0C02020101020406")
180 CALL CHAR(108,"000001030
30503010101010000070400C0C0C
0E0E0E0F0C0C04040C0C0A080C")
190 CALL CHAR(112,"000001010
70909050101000007040000C0C0C
0E0E0F8C0C0C040C0C0A0102")
200 CALL CLEAR :: CALL MAGNI
FY(3):: CALL SCREEN (5)
210 DISPLAY AT(1,1)BEEP:"EX
AMPLE OF ANIMATION "
220 CALL SPRITE(#1,92,16,100
,100,0,10)
230 FOR N=92 TO 112 STEP 4
240 CALL PATTERN(#1,N):: FOR
DELAY=1 T0
30 :: NEXT DELAY
250 NEXT N :: GOTO 230

This program illustrates how you can have some excellent animation so your man looks like he is actually running.

Lines 100-190 define the 24 characters that make up the man.

Line 200 Initializes the size of the sprites and the colour of the screen.

Line 220 calls the sprite into being.

Lines 230-250 set up a loop which keeps changing the character number and so so create an illusion of animation.

100 REM SPRITE PROGRAM #2
110 REM 99/4A MAGAZINE
120 REM JOYSTICK MOTION
130 REM
140 CALL CHAR(100,RPT$("F',16))
150 CALL CLEAR
160 CALL SPRITE(#1,100,2,96,128)
170 DISPLAY AT(1,10)BEEP:"READY..."
180 CALL JOYST(1,A,B):: IF A
+2*B THEN CALL CLEAR ELSE 180
190 CALL JOYST(1,X,Y):: CALL
MOTION(#1,-Y*2,X*2):: GOTO 190

This shows one way of how you can use a joystick to move a sprite in the required direction.

Line 140-150 clears the screen and defines a square character.

Line 160 puts the sprite in the middle of the screen with the desired attributes.

Line 180 is the joystick equivalent of a 'wait for a key to be pressed'.

Line 190 sets the sprite in the required direction (for a faster or slower movement change the value 2 in the CALL MOTION statement.)

Go to top of page

Well we know how to move in a straight line, let's try something a little more involved and attempt to simulate the motion of a cannonball.
100 REM SPRITE PROGRAM #3
110 REM 99/4A MAGAZINE
120 REM EXAMPLE OF CURVED MOTION
130 REM
140 CALL CHAR(100,RPT$('F',16))
150 CALL CLEAR
160 CALL CHAR(32,"FF"):: CAL
L COLOR(9,5,5):: CALL HCHAR(
13,24,100)
170 CALL SPRITE(#1,42,2,96,10)
180 H=0 :: FOR N=1 TO 20 2 ::
H=H-1 :: CALL MOTION(#1,H,
40):: NEXT N :: FOR N=1 TO
20 :: H=H+3 :: CALL MOTION(#
1,H,40):: NEXT N
190 CALL MOTION(#1,0,0):: FO
R D=1 T0 500 :: NEXT D :: GO
TO 170

Lines 150-170 are really self explanatory, they set up the screen and put a sprite on it.
Line 180 does all the work, and what it does is to give the sprite a changing vertical motion, whilst giving it a constant horizontal rnotion. Quite a bit of trial and error is needed here to obtain the desired results.
Line 190 stops the sprite and loops to the beginning of the program

These two programs are examples how you get one sprite to chase after another. The first program has the chasing sprite moving at a constant speed, whilst the second program moves the sprite faster the further away from the other sprite it is.
100 REM SPRITE #4
110 REM 99/4A MAGAZINE
120 REM
130 REM CHASE
140 REM
150 CALL CLEAR :: CALL SCREE
N(2):: CALL MAGNIFY(2):: CAL
L CHAR(100,RPT$("F",16))
160 CALL SPRITE(#1,100,5,10,
10,#2,100,9,176,240)
170 CALL JOYST(1,X.,Y):: CAL
L MOTION(#1,-Y*4,X*4):: CALL
POSITION(#1,PX,PY,#2,PR,PC)
:: MX=8*SGN (PX-PR) :: MY=8
*SGN(PY-PC) :: CALL MOTION(#
2,MX,MY)
180 CALL COINC(ALL,C):: IF C
THEN CALL SCREEN(16):: CALL
SOUND(100,-5,0):: CALL SCRE
EN (2)
190 GOTO 170



100 REM SPRITE PROGRAM #5
110 REM 99/4A MAGAZINE
120 REM EXAMPLE OF CHASE 2
130 REM
140 CALL CLEAR :: CALL SCREE
N(2):: CALL MAGNIFY(2):: CAL
L CHAR(100,RPT$("F",16))
150 CALL SPRITE(#1,100,5,10,
10,#2,100,9,176,240)
160 CALL JOYST(1,X.,Y):: CAL
L MOTION(#1,-Y*4,X*4):: CALL
POSITION(#1,PX,PY,#2,PR,PC)
:: MX=0.5* (PX-PR) :: MY=0.
5*(PY-PC) ::
CALL MOTION(#2,MX,MY)
170 CALL COINC(ALL,C):: IF C
THEN CALL SCREEN(16):: CALL
SOUND(100,-5,0):: CALL SCRE
EN(2)
180 GOTO 180

Here's an example of using the COINC routine, and also of using the keyboard for moving a sprite. To change the speed of the asterisk change the 10's in line 160. The CALL COINC (ALL,C) in the same line checks to see if ANY two sprites have hit each other. If they have then line 170 checks to see which ones have hit and deletes the sprite from the screen whilst sounding a tone.

100 REM SPRITE EXAMPLE #6
110 REM 99/4A MAGAZINE
120 REM EXAMPLE OF COINC
130 CALL SCREEN(2):: CALL MA
GNIFY(2):: CALL CLEAR
140 FOR N=1 TO 5 :: CALL SOU
ND(100,N*220,0):: CALL SPRIT
E(#N,65+N,N+3,N*18,100,5 ,IN
T(RND*15)):: NEXT N
150 CALL SPRITE(#6,42,15,10,10)
160 CALL KEY(1,K,S):: MX=(10
AND K+1=1)-(10 AND K=5):: M
Y=(10 AND K=3)-(10 AND K=2):
: CALL MOTION(#6,MX,MY):: CA
LL COINC (ALL,C):: IF C THEN
170 ELSE 160
170 FOR N=1 T0 5 :: CALL COI
NC(#6,#N,20,C):: IF C THEN C
ALL SOUND(100,111*N,0):: CAL
L DELSPRITE(#N) :: Z=Z+1 ::
IF Z=5 THEN Z=0 :: GOTO 140
180 NEXT N :: GOTO 160

By now you should be familiar with using sprites and we hope to give you more examples in the future. I hope if you have a short routine which you would like to share with your fellow sprite-masters you will send it in .

BYE' for now.
all correspondence to BRIGHT SPARKS



Go to top of page
Review- Popeye POPEYE- A Review

Solid State Software made by Parker Bros.

Shiver me timbers, I‘d never thought it'd happen - those heroes at PARKER brothers have put me inside a silicon chip, and worse still somebody holding a black box with a snake coming out of it tells me poor ol' self what to do.

First thing I hears when I wakes up is me tune so I knows the no good Brutus is up to no good sornewheres. looks up and there's me sweetheart Olive Oil throwing her poor little heart out, me being a good sort starts collecting them hearts but there's that big bully Brutus trying ta give me a bit of GBH.

Fortunately some poor soul left I me can of spinach but the weather must have gotton‘ to it as it don't last too long. If that fails to get me outa trouble I can always hit the punchbag and if the great bully is under the barrel I'll have time to get a few more of me Olives hearts. Just when I thought I'd enough to contend with there's this old friend of Brutus, (ED- never knew he had friends) the ol' Seahag and she keeps chucking bottles at me poor self. That Brutus he don't fight fair he'll throw bottles at. me and even reach down to try and make me lose me balance and sometimes he'll even try to jump on top of me - he should use the Glueensbury Rules - come to think of it he probably couldn't even read them!

Just when I thought I'd rescued me sweetheart Olive that Brutus then takes her to. a block of flats to keep us » apart, but if I can reach me spinach I can knock his block off an' earn me more points. Oh, I forgot to mentior poor Olive being a musical nature is trying to throw musical notes for me.

Wimpey that nice landlubber tries to help me as I can jump on the see-saw to move up the levels and if I catch Swee'Pea on the way up I can go all the way to platform 1. But Brutus when he's feeling brave sometimes follows me - honest ya'd think he was real sometimes and he never quits. The Seahag friend of Brutus still keeps chucking them bottles at me to try to upset me balance, good job me right arms pretty good as if I time it right I can smash them bottles by thumping them, but that Brutus throws five or six at a time, which makes hitting them harder.

Well I managed to collect enough notes, but Brutus beat me to Olive and we are now on his ship, I can see Olive above' me throwing cries for help. I'll have to catch these cause when I do the ladder which I'll need to rescue Olive gets longer. I'll have to be careful round here 'cause theres a moving platform and if I mis-time jumping onto it I'll be ending up in the drink.

Brutus and his friend The Seahag is still there but they've found another friend, this dirty big bird who flies for me, but if I am really quick I can punch that vulture and earn a lot of points. This time I only have me spinach to help me an' Brutus and his friends is getting really mean so I'l1 have to use me wit's about me and out- smart them cause although 'he's big he's as smart as two short planks.

Remember me hearties to time your punching the bottles on this game, and use all those traps, and eat all your spinach 'cause it's just like the cartoon, an' I can knocks the block off that seadog Brutus. Pay attention me lads and lasses cause together we'll rescue me Olive and gain us some good points. Oh, last thought - don't let the cries from me love Olive sink cause it may cost ya and ya's only have 3 chances to rescue Olive from the evil clutches of Brutus.

If all this sounds like fun to you, Popeye is as near to the real arcade version as you can get. The graphics are amazing and the animation of the two main characters superb.

Sorry for those joyless people out there but this game requires joysticks, but options include one or two players Even though it's not made by Texas Instruments themselves it will work on all versions of the TI we have come across even the infamous Version 2.2. If you enjoy well thought out games that make the most of TI's graphics, then you'll be in yers element with this one. It's nice rather than difficult to play, and I don't think you'll be disappointed with it.

After much speculation, POPEYE has only just swam all the ways from tne States, and is all in all undoubtedly one of the top games for the TI; facts which are reflected not only in the price, but also in the sales figures.

"I don't suggest ya tries it if ya yer spinach in a quiche!"

(quote - PARKER BROTHERS)

Review - Fathom Solid State Software made by Texas Instruments

You know, when it really comes down to it, I can't think of an 'arcade' computer game that doesn't involve one or both of two basic elements - hitting and avoiding. The only thing that makes any game stand out is if it's concept is so original, or its execution so clever that you get hopelessly caught up in the spirit of it, and the simplicity of its elements is forgotton.

Well surprise, surprise - FATHOM just happens to be a case in point. At a time when there is a need to escape from the aliens, ladders and death-marc we find a refreshingly new scenario. Cast as you are in the unlikely dual role of seagull and dolphin, (one at a time, thank goodness) you get the sense that you are not moving merely 'up', 'down', 'left', and 'right', but that you are flying/swimming around in an unnervingly realistic manner.

This is achieved with a kind of 'pumping' action on the fire button of the joystick to flap your wings, in conjunction with the usual direction movements. The dolphin has a fairly realistic swimming action just with the joystick directions alone. There is an option for keyboard, but is probably harder to master. So different is this mode of movement to the norm, that it takes a while to get the hang of it - but enough of this, what's the game all about? Let me quote from the manual which waxes far more lyrical than I . .

"Rescue Neptune's daughter, Neptina! Chained to the bow of a sunken ship, she awaits her freedom. I-ier father is powerless to save her because his enemies have broken his magical Trident into three pieces. You, Mortal, rnust travel to the heights of the heavens and the depths of the seas in search of the scattered pieces. Touch clouds and seahorses until you find the magical stars that become a part of the powerful Trident." Well it's like this - not only have you got to travel the sky and sea to find the hidden Trident pieces, which you need in order then to rescue Neptina, you have to do it on EVERY level. Yep, and then there is the time limit just to create a bit of panic. Oh, did I forget to say about the ravens? And the jellyfish, seaweed, crabs and sharks? Silly me - just remembered that giant octopus that guards the ship. Well couldn't make it too easy for us now, could they? Know what? The was another thing - the volcano. Don't know how I forgot that.

Of course, interspersed between the nasties (which at worst pommel you to death, sting you senseless or drag you away, and at best merely drain your energy) there are the clouds and seahorses. When these are touched, you gain energy; and touch them you must, for hidden behind some of them are the pieces of Trident.

'Travel to the heights and depths' They're not kidding! The whole scene, stretching from sea-bed to sky-top (?), is divided into sectors through which you travel. The full extent of this scene unravels with each successful level accomplished, and you could do worse than to compile a map as you go along!

The graphics are appealing and clever, although by definition a little repetitive; with the volcano being worthy of mention, especially in higher levels. The ship scene is effective, and is protected by an octopus that you might say was arresting. Neptina herself was a bit of an anti-climax, nice and colourful, but smaller than anticipated; and the least I expected was a kiss! Never mind though, you after all treated to an extract from ‘Pictures at an Exhibition' as she swims to freedom.

Speech is included for those who have a synth., although it isn't exactly exploited. It consists mainly of instructions and encouragement from what presumably is the voice of lovely Neptina, but which sounds more like Miss Gaunt, an English teacher that I remember well.

I don't know how many levels there are to FATHOM, but at time of writing I have reached the seventh. This has involved a few hours or so of play, but then I haven't got round to charting a map, which would undoubtedly save a lot of time in the long run. Certainly the game is interesting enough to keep me going back for more, and for my money has to be a winner simply because it is so refreshingly different. To be frank, I was surprised when‘I saw the price, as I personally rate it in the same league as any of the modules that cost a few squid more.

See what you think


Go to top of page

How to do it
Console V2 "Can't do that"

INCOMPATIBLE MODULES

The main source of difficulty in this respect is a particular version of the 99/Aa console that TI manufactured. It is known as the Version 2.2, and it contains a modification that Tl added specifically to thwart the attempts of other parties to produce compatible modules.

The consoles that contain this most generous and convenient of enhancements were happily among the last to come off the production line, and comparitively few reached these shores. Many that have appeared are units that TI have supplied as replacements for faulty ones, so be warned. In general they pose no problem, but they do foul up any attempt to use modules made by ATARI. SUPERSKETCH also falls victim, but Parker Brothers appear to have got round the obstacle,»since POPEYE comes through unscathed.

In short, you will know if your console is a Version 2.2, as it is clearly indicated on the title screen when you turn on the computer. Some consoles that are not Vs 2.2 are still a little unhappy with some 3rd party modules - DONKEY KONG being a common offender - but usually such problems are not 'fatal' and consist of writing on the screen being illegible, rather than the game being unplayable.

There is a device on the market that will enable Vs 2.2 owners to overcome the problem; if we receive sufficient enquiries we will pursue the matter further. We welcome your comments if you have any experience of this problem.

Scrolling SCROLLING 

first, from Kuldeep Chopra, the proqram scrolls horizontally whatever wording you put into the variable M$. You will require EXTENDED BASIC.

100 CALL CLEAR :: CALL SCREE
N(2):: CALL CHAR (88, "FFFFF
FFFFFFFFFFF") :: CALL COLOR
(12,12,1)
110 M$="        IT WAS A DAR
K  AND STORMY NIGHT  SUDDENL
Y A SHOT RANG OUT "
120 FOR I=1 T0 LEN(M$):: DI
SPLAY AT(1,1):SEG$(M$,I,28)
:: NEXT I :: GOTO 120

This is our variation:

100 CALL CLEAR :: CALL SCREE
N (15)
110 FOR I=1 TO 12 :: CALL CO
LOR(I,9,1):: NEXT I
120 M$=RPT$(" ",10)& "TEXA
S HOME COMPUTERS............
..... ARE THE GREATEST......
............. AND SO SAY ALL
OF US"
130 FOR I=l TO LEN(M$):: DIS
PLAY AT(1,1):SEG$(M$,I,28)::
NEXT I :: GOTO 130

While playing with this routine, I found an interesting effect thus:

100 CALL CLEAR :: CALL SCREE
N (15)
110 FOR I=1 TO 12 :: CALL CO
LOR(I,9,1):: NEXT I
120 M$=RPT$(" ",12)&"TEXAS
HOME COMPUTERS..............
... ARE THE GREATEST........
........... AND SO SAY ALL O
F US"
130 FOR I=l TO LEN(M$):: DIS
PLAY AT(23,1):SEG$(M$,I,28):
: PRINT :: NEXT I :: GOTO 1
30

Peter Hutchinson sent us two examples of horizontal scrolling. The first is in TI BASIC:

100 H$="TI HOME COMPUTER"
110 ROW=24
120 COL=10
130 LENGTH=7
140 GOSUB 190
150 CALL CLEAR
160 FOR D=1 T0 700
170 NEXT D
180 END
182 FOR J=1 TO LENGTH
184 SP$=SP$&" "
190 NEXT J
200 M$=SP$&M$&SP$
210 FOR A=l TO LEN(M$)-LENGTH+l
220 M1$=SEG$(M$,A,LENGTH)
230 FOR B=1 TO LEN(M1$)
240 CALL HCHAR(ROW,COL+B-1,ASC(SEG$(M1$,
B,1)))
250 NEXT B
260 NEXT A
270 RETURN

The other is in EXTENDED BASIC:

100 CALL SCROLLWORDS(24,10,7
,"TI HOME COMPUTER")
110 FOR D=1 TO 1000 :: NEXT D
120 END
130 SUB SCROLLWORDS(R,C,L,M$)
140 M$=RPT$(" ",7)&M$&RPT$(" ",7)
150 IF LEN(M$)<L THEN SUBEXIT
160 FOR A=1 TO LEN(M$)=L+1
170 DISPLAY AT(R,C)SIZE(L):S
EG$(M$,A,L)
180 FOR B=l T0 14 :: NEXT B
190 NEXT A :: SUBEND

Thank you Kuldeep and Peter


Go to top of page

Crazy Console EXTENDED BASIC 'LOCK-UP'
lt is surprising how often this is reported in recent times. Whilst there may be many reasons why a computer can 'freeze' (and it usually happens in the middle of typing a large listingl), one thing is clear. If the contacts in your module slot are soiled or worn - and lets face it, any console that has had a fair bit of use is prone on both counts - then it is liable to 'lock-up' for no apparent reason. Often the module in use is Extended Basic, and if this is the only or usual module to manifest the condition, many naturally assume that it is the module at fault. The truth is that Extended Basic uses more of the contacts than other modules, and is consequently more vulnerable when they are soiled or worn.

Peter Hutchinson writes
". . .EXTENDED BASIC modules do occasionally cause the computer to lock up, and the reason for this is that moisture and dirt have collected in the cartridge port, which interferes with the module's operation. Therefore the port needs to be cleaned out with a tissue 'or rag occasionally. You can do this yourself by taking the computer apart (watch your warranty - Ed.) or take it to a computer shop for servicing .... "

If you have this problem, at worst you will have to get TI to clean or replace the contacts; you may find that a solvent Contact cleaning spray such as Electrolube will do the trick. One absolute must is a dust cover on your computer, if you do not already have one


DRAWING CIRCLES
Here is a program in EXTENDED BASIC that we received from Kuldeep Chopra that outlines a circle:

100 CALL CLEAR :: CALL SCREE
N(2) :: CALL CHAR (128, "000
8081C7F1C0808")
110 B=40*ATN(2) :: R=40
120 FOR A=1 T0 8 STEP B/(5*R)
130 CALL SPRITE(#1,128,INT(R
ND*13+3),92+R*SIN(A) ,128+R*
COS(A))
140 NEXT A :: GOTO 120




Go to top of page
end of article


[ TI Book front page | TI Resources Page | PC99 Review | PC99 Programs ]

About the addfreestats tracker on this page