FROM OUT OF 'THE ASHES 9 RISES
»» zxtv mm aimt ««
T5m(Sx/S5m<sQ§i5ir N(Dir(lIhAm(gir5(esiiiii Vmw (EipaDii[ps
Timex/Sinclair NortkAmerica* User Groups Auburn, Indiana
Volume 2, Number 4 Winter 1992
MEMORY MAP
ROUTINES ADDRESS
T/SNUG Chairmen 1
T/SNUG Information 2
ZXir QLive Alive! Article Contributions 2
Contributors to this Issue 2
From the Chairman's Disk .; 2
TREA$URY NOTE$ 4
From the Editor's Desk 4
LIBRARY 4
INPUT/OUTPUT 4
NEWS ITEMS 5
ITEMS AVAILABLE FROM T/SNUG 5
SPECIAL DEALS AND BUYS 5
Articles:
50 TIPS 6
Ads 24
And now a word from our Venders 27
T/SNUG CHAIRMEN
Here is the list of 1992 T/SNUG Chairmen and how to contact ✓
them. We wish to support the following SIGS: ZX80/ZX81, Z88,
SPECTRUM/TS2068/TC2068 and QL. If you have questions about any
of these fine machines contact the Chairman.
POSITION
Chairman
Vice-Chairman
Vice-Chairman
\?4 ^a-T^a-l rman
Vice-Chairman
Vice-Chairman
Vice-Chairman
Treasurer
NAME
PHONE
PRIMARY FUNCTION
Don Lambert
Dave Bennett
D.G. Smith
VH Qnmj
Rod Gowen
Rod Humphreys
Bob Swoger
Abed Kahale
219-925-1372 Chief Motivator
717-774-7531 CATS/Z88
814-535-6998 TAPE & JLO Library
407-380-5124 ZX81 TAPE Library
503-655-7484 CCATS
604-931-5509 VSUG/TS2068
708-837-7957 Newsletter/BBS Sysop
708-885-4337 CATUG/Cash Tracker
Copyright (C) 1992 Timex/Sinclair NorthAmerican Users Groups
ZXir QLive Alive !
Volume 2, Number 4 1 Winter 1992
T/SNUG ImfforaiiitioiQ
zst? mm mmt ± a the
newsletter of T/SNUG, the
TIMEX/SINCLAIR NorthAmerican
User Groups, providing news and
software support to the T/S
community in at least four
newsletters per year.
It is our goal to build a
Public Domain software library
and develop a list of available
software for all T/S machines
showing the source.
Vendors have free space in this
newsletter which they receive
free of charge so they may see
we are still out here. If you
feel T/SNUG should perform
other tasks, let us know your
feelings.
T/SNUG wishes to have one
chairman from every T/S user
group who will take charge of
sending us their groups
newsletter and other
correspondence for inclusion in
this newsletter.
We encourage your group to copy
this newsletter and distribute
it at regular meetings to all
of your members. If you can't
copy this newsletter, perhaps
we can provide a disk with the
articles on it for use in your
newsletter .
Articles appearing in this
newsletter can be obtained by
downloading this newsletter
from our BBS.
Have you solved a problem in
one of your softwares or
hardwares? Please share it with
the rest of us.
You can keep T/SNUG alive for
an annual contribution of
$10.00 made payable to Abed
Kahale. Send questions,
articles or check to:
ABED KAHALE
ZXir QLIve Alive! Newsletter
335 W NEWPORT RD
HOFFMAN ESTATES IL 60195-3106
Tele: H708-885-4337
2
ZXir QLive Alive!
Article CoBtritoiitioiis
If you would like to contribute
an article to the newsletter,
upload a file to our BBS called
TSNUG.ART . If you have an AD
for the newsletter UPLOAD a
file called TSNUG.ADS. If you
have NEWS to POST about your
group. UPLOAD a file called
TSNUG.NWS.
If you need help contact the
SYSOP by E-MAIL on the T/SNUG
BBS, mail or by phone:
BOB SWOGER
613 PARKS IDE CIRCLE
STREAMWOOD IL 60107-1647
It is preferred you call:
H708/837-7957 or W708/576-8068
If you can only contribute hard
copy, tape or disk format, send
your inputs to:
DON LAMBERT
ZXir QLIve Alive! Newsletter
1301 KIBLINGER PL
AUBURN IN 46706
Tele. 219/925-1372, it is not
necessary to call when
submitting material.
CONTRIBUTORS TO THIS ISSUE
Marvin Johnson
Abed Kahale
Don Lambert
Joseph P . Rampolla
Bob Swoger, K9WVY
FROM THE CHAIRMANS DISK
I wish to thank Abed Kahale for
building up my LarKen RAMDISK
board. It works just fine
although I have only a few
programs on it. I have found
only one program that will not
work on RAMDISK, nor will it
work on a regular disk unless
it is LOADed from the original
menu program. That is COPY12.B1
that is on TTSUC's disk #1. I
thought that with it on RAMDISK
I would be able to get it into
operation without having to
find it in the LarKen disk file
box. I suspect that it is
because of a PRINT #4 in the
menu that it will not work. But
not being a programmer I am
lost with anything that is not
directly straight programming.
Throw in a PRINT #4 and some
VAL and I am lost.
I received LogiCall V5.1 from
Abed Kahale on my RAMDISK. But
there is a problem. While it
works on the RAMDISK and the
disks that I have generated it
on it will not create itself
onto another disk as an
AUTOSTART program. I can SAVE
LogiCall but not generate
AUTOSTART. I press A for
AUTOSTART and get ERROR C
nonsense in BASIC, 430:1.
Somewhere, somehow, it has
gotten corrupted. My RAMDISK
does not have a write protect
switch so it could have been
overwritten somehow. What I
will have to do is use an
earlier version of LogiCall to
SAVE to disk and then SAVE just
the LogiCall V5.1 portion to
get the latest version on disk.
I just now tried to get a
working LogiCall, that is, one
that will self SAVE, by working
with V4.9 and then trying to
SAVE just the LogiCall V5.1 and
while the program works I still
cannot use that to SAVE to disk
the self LOADing properties
since it halts after I press
the A key. So the problem is
not in the AUTOSTART, maybe,
but could be in V5.1. Since the
only thing that I use and
neither Bob or Abed don't is
the LarKen/Oliger marriage that
could be the problem. Will
version V5.0 work? And I don't
have version V5.0. Sorry about
that Bob but I can't use the
latest version if it will not
work. [Don fell victim to a
copy of LogiCall modified for
Abed's personal use with
Dohany's EPROM! LogiCall has
only been released as version
V5.0! See editor's report. Ed.]
In reply to "FROM THE EDITORS
DESK** comments in the last
issue about the problem of me
supplying Editor Bob with
DOUBLE SIDED disks when he has
only SINGLE SIDED drives - that
was an error on my part. I
assumed that since he had been
sent a double sided disk drive
that he had installed it. [I
was? By whom? Ed.] BUT! Bob has
informed me that is not the
case. I will only send Bob
SINGLE SIDED disks NOW THAT I
KNOW THIS. And since Bob uses
SSDD disks and his drives
require head stepping rate not
faster than 30 ms and he wants
LogiCall on every disk I will
set up my master disk with that
on it and will then copy the
disk using D.U.S. copy program
"COPYII.B1".
For those that have a LarKen
TS2068 disk interface and have
never used COPYII.B1 it is a
program that copies and FORMATS
the disk at the same time. If
you use COPYII.B1 to copy from
a SSDD disk the result is still
a SSDD disk, and if you copy a
DSDD disk to a DSQD drive you
end up with just the same data
on the QD disk and the same
number of tracks. In other
words, you will be using only
half the disk. The last half of
the disk can't be accessed
since the directory only
contains the last track that
was on the DSDD disk.
In reference to Bob's comment
about not using LogiCall to
access another drive to get an
AUTOSTART to work on a drive
other that drive 0, at that
time, spring of 1989, I was new
to disk drives and also I did
not know about the existence
LogiCall or Bob! It was later
in the year at SMUGFest in
Milwaukee that I first got
LogiCall and that first version
required you to type in the
file name to LOAD a program.
I agree with Bob that what I
need is a "quickie card". I did
create one for a nice person so
that there would be no problem
of using the TTSUC disk MSDOS
to MSCRIPT and I also sent a
program to convert MSCRIPT to
TASWORD II. The entire "quickie
card" ended up being a page and
a half of text. I included what
to do as well as what to expect
on the screen. Bob, how about a
couple of "quickie cards" for
me and or other readers? I
believe that others could
benefit, so please publish it
here, the ones I need are on
MaxCom and LOADER V.
Don Lambert, Chairman
TIMEX/Sinclair NorthAmerican
User Groups
TREA$URY NOTES
As of March 30, 1993, we have a
balance of $486.39 from 7
groups and 39 individuals.
Abed Kahale, Treasurer
TIMEX/Sinclair NorthAmerican
User Groups
FROM THE EDITORS DESK
I contacted Chairman Don when
he told me he had a copy of
LogiCall V5.1. This interested
me since I, the developer, only
had V5.0! I found Treasurer
Abed had modified a copy of
V5.0 for his own personal use,
called it V5.1, and sent it to
Don. Abed had changed the
program calls to call in his
personal software names and so
Don found NOTHING would work!
I also received calls from RMG
customers that some LogiCall
programs didn't work. Upon
checking on this I found that a
bad version of VU-CALC, VI. 2,
is being shipped by RMG and
also that some customers don't
know how to convert FORMAT. B_
to run with their systems.
PLEASE BE PATIENT with me and
RMG, this shall soon be fixed
for future RMG customers.
Better to wait for good product
than put up with bugs. Thanks!
Bob Swoger, Editor
TIMEX/Sinclair NorthAmerican
User Groups
LIBRARY
%%%%%%%%%%%%%%%%%%%%%%%%%%
! ! MAILING ADDRESSES ! !
%%%%%%%%%%%%%%%%%%%%%%%%%%
It has come to my attention
that there are those out there
that do not want to use the
telephone to find out about
availability of the software
and/ or hardcopy libraries. So
for those I am including the
addresses of the vice-chairmen
if not given else where in ZXir
QLive Alive ! . Please ! When
writing enclose a LSASE:
Dave Bennett (Z88)
329 WALTON ST Rear
Lemoyne PA 17043
D 6 Smith (2068 TAPE/JLO)
R 415 STONE ST
Johnstown PA 15906
Ed Snow (ZX81 TAPE)
2136 CHURCHILL DOWNS CIR
Orlando FL 32825
Rod Gowan (CCATS)
1419 1/2 7th ST
Oregon City OR 97045
Rod Humphreys (VSUG/2068)
10984 Collins Place
Delta B.C. V4C 7E6 CANADA
INPUT/OUTPUT
Marvin Johnson writes: Hi
there, I believe you are part
of a Timex Sinclair user group?
If so, I would appreciate being
added to your EMail list for
ZX81 matters if possible. I am
actually in Paris France
despite the EMail address,
routed through Cray Inc in the
States, mpj8potiron.cray.com
Two of us in Cray France have a
ZX81 but we haven't figured out
a way of hooking it up to the
Cray yet ! ! !
Nobody's got a Spectrum here
though a couple of friends in
the UK have one. One even has a
QL too. :-) Regards,
Mr . Marvin Johnson
11 rue JACQUIER
75014 Paris
FRANCE
Joe Rampolla writes: I received
a copy of the newsletter and
was happy to see my article!
You did a great job of
transcribing my stuff, but the
editor mistook my sample of
writing text for a letter to
the editor. He also cut out a
few things to make a couple of
strange sentences, but I am not
complaining. The important
thing is that the correct ideas
were communicated.
I received a letter from the
owner of the Byte-Back company
in thanks for giving new life
to the modem software, and his
product line. He sent the text
of a version of ZCOMM, but it
is different (I think) from
mine, and too technical for me.
But I have been making some
sense of it. Perhaps I will
have some new ideas in the
future .
I hope you and your family are
well. I am still trying to
leave Baltimore city, but the
real estate here has been
greatly devalued because of the
terrible crime problem.
Thanks for your help and all
the kind work you do for people
like me. Sincerely,
JOSEPH P. RAMPOLLA
2638 E. Monument Street
Baltimore MD 21205
NEWS ITEMS
ComputerFest 1993 sponsored by
the Dayton Microcomputer
Association, Inc. will be held
on Saturday August 28 from 10
AM to 6 PM and Sunday August
29th from 10 AM to 4 PM at the
HARA Conference & Exhibition
Center, 1001 Shiloh Springs Rd,
Dayton Ohio. Contact Chairman
Don if you are going. Tickets
are $5 for both days.
The ISTUG picnic will be held
on June 26th 1993 at the cabin
of Frank and Carol Davis.
Contact Frank Davis, 513 East
Main ST, Peru IN 46970 or phone
him at 317-473-8031 to let him
know you're coming.
NOTE TO
MEMBERS
If you have a question, an
article or a complaint send a
note or a Post Card to :-)
ABED KAHALE
335 W NEWPORT RD
HOFFMAN ESTATE IL 60195-3106
Tele: H708-885-4337
Please remember that your
subscription has to be renewed
every new year
ITEMS AVAILABLE FROM T/SNUG
It has come to our attention
that some LarKen Users are
using something less than
Version 3 firmware. T/SNUG will
supply updated EPROMs, SYSTEM
DISKS, and MANUALS.
If you have a mismatch between
you LarKen DOS EPROM and your
Western Digital Controller
chip, we will send you the
correct one for free on behalf
of our friends Rod Gowen of RMG
and Larry Kenny of LarKen. You
should be using L3 EPROMs with
WD1770 controller chips or L3F
EPROMs with WD1772 controller
chips „ Check it out! Call in
request's to Bob Swoger at
W708-576-8068 H708-837-7957
SPECIAL DEALS AND BUYS
NAPJWare (Nazir A. Pashtoon's
new endeavor) announces the
availability of all Timex or QL
PAL (Programmable Array Logic)
chips. If interested, call him
evenings at 708-439-1679.
If you are a LarKen LK-DOS
owner and would like a SPECTRUM
V2 kit for your system, we will
supply an EPROM, socket and
74HCT32 for $12 which includes
shipping and handling. The
install instructions are in
your LarKen manual. We shall
not be responsible for your
install job. AERCO owners need
only the SPECTRUM EPROM for $10
$10 is forwarded to LarKen.
So you like to fly? The 747
Flight Simulator for Spectrum
by Derek Ashton of DACC sold
over 4 OK copies in EUROPE.
Requires Spectrum Emulator. At
this time supplied on LarKen
SSDD disk only for $10 which
goes to Derek Ashton, now
working at MOTOROLA with Bob
Swoger. Call in requests to Bob
at W708-576-8068 H708-837-7957
ARTICLES
50 TIPS
compiled by Don Lambert
This is all from a little
booklet that I acquired for the
SPECTRUM. There was no copy
right notice on the booklet nor
even a publisher's by line. I
thought that this was of
sufficient interest to type it
up for others to use. This also
should work for the TS2068 with
or maybe without the Spectrum
ROM.
50 TIPS FOR BETTER
SINCLAIR COMPUTING
0.> INTRODUCTION
Programming can be fun but
often you will want to produce
an effect on the computer
though you are not able to find
a routine to do it.
The Sinclair User team has also
experienced those difficulties
and we have decided to share
with you a collection of 50
programming hints and tips
written with reference to the
letters which we receive by the
sackful every week.
It is difficult to cover all
the areas which make up the
world of programming but we
have tried to concentrate on
the main aspects of writing in
the BASIC language. Areas
covered include graphics,
sound, number base conversion,
using joysticks with your own
programs and efficient use of
memory.
Nearly all the tips include
programs or short routines
which illustrate the points
given, or contain step by step
instructions on how each
technique can be applied.
This booklet is aimed at those
people who want to become more
experienced in the art of
programming. It is also, we
hope, something which will spur
those who have not tried to
write their own programs to do
so. 6
1. > STRUCTURED PROGRAMMING.
Structure is one of the
all-time great snob words of
programming. People with
expensive machines frequently
deride the Spectrum because
BASIC "cannot support
structured programming" .
Structured programming is a
concept, and the principles can
be used on any machine.
The idea to keep in mind is
that of breaking down your
program into a number of short
blocks, preferably subroutines.
For instance, an arcade game
might have the following
blocks :
1000 set up the screen and va
riables.
2000 joystick/keyboard input.
3000 result of move.
4000 end of game.
5000 -set up user defined grap
hies.
The rest of the program is then
a simple manner of linking the
routines together:
10 GOSUB 5000: GOSUB 1000
20 GOSUB 2000
30 GOSUB 3000
40 If the game is over THEN G
OSUB 4000
50 GO TO 20
Such a structure makes it much
more easy to alter a program,
or add extra features. You
simply write another subroutine
and adjust the section at the
beginning which controls which
subroutines are used and when.
2. > GOOD HABITS.
Always try to use names for
variables which indicates the
purpose of the variables.
Variables such as "hor™ and
"ver" for horizontal and
vertical coordinates are
easier to follow than using
"xl" and n x2 n which are
meaningless. BASIC was designed
to follow English wherever
possible, so there is every
precedent for keeping the
tradition.
Do not be misled into using
single letter variables to save
space. If you are writing a
program so long that space is
important, you will need names
which are easy to understand.
You can always turn the
variables into simple one- or
two- character names at the end
if it is necessary.
Use plenty of REM statements to
remind you what a block of
program does. You may know all
about it at the time you write
it but it is very easy to
forget after a week away from
the machine.
3.> USER DEFINED FUNCTIONS.
User defined functions are a
gift to programmers, but few
use them, perhaps because they
are put off by the apparent
complexity of the syntax.
Think of them as miniature
subroutines, which do not need
to be referenced by a line
number, and you will appreciate
their power.
The important thing to get
right is the number of
variables the function will
use. When you define the
function you write a general
instruction with variables in
it. When you use it you write
the precise variables or
numbers you want to use in the
order in which they occur in
the definition.
Here is a simple example using
no variables at all. It
simulates throwing a six-sided
die.
DEF FN a()=INT(RND*6+l)
Later in the program the
instruction LET X=FN a() will
put a number from 1 to 6 into
X.
Here is an example using
variables. It adds two strings
together with a space between
them.
DEF FN a$(X$,Y$)=X$+""+Y$
Later in the program, you might
have the following routine:
100 INPUT "First name?";C$
110 INPUT "Second name?";D$
120 LET N$=FN a$(C$,D$)
You could enter "John" and then
"Smith". The function would
combine the two to read "John
Smith".
If you are writing a program
using a lot of complex
manipulation of numbers or
text, you may well find it
saves much space and trauma to
use pre - defined functions.
4. > INFINITE SCROLL.
It can be frustrating,
especially during a game, if
the program keeps stopping and
asking if you want to scroll
the screen upwards.
Screen scrolling is controlled
by one of the system variables,
which counts the number of
screen scrolls the computer
will perform before it stops
and asks you to press a key.
The line 10 POKE 23692,255 will
disable the feature for 254
screens. If you want to make
sure that you never have to
press a key to scroll, then
simply make sure that line is
repeated every so often during
the course of the program, by
incorporating it into a loop,
for instance.
5. > UDG STORAGE.
User defined graphics
characters, or UDGs, are stored
in a special part of memory
which starts at address 32600.
Each character is stored as
eight consecutive bytes made up
of eight bits each, of which
one pixel, or dot, on the
screen.
When displayed on the screen
the eight bytes form a grid.
Using standard UDGs there is
only enough memory for letters
A to U. Those are set up in RAM
and can be changed by using
instructions structured around
the general formula POKE USR
"graphics character" + byte
number (1 to 8) . For instance,
the seventh byte of the letter
A would be entered using the
instruction:
POKE USR "A"+7
As the UDG areas of memory is
protected the graphics set up
within it cannot be destroy
unintentionally unless you pull
the plug. Not even NEW or CLEAR
will do it.
6.> DEFINING UDGs.
To design and set up a UDG
character within a BASIC
program you need to plan the
shape of the figure on a grid.
Ink in the relevant squares to
make up your character with a
black or blue pen. Then take
each horizontal line in turn
and by it write the number sum
of the line. That number is
constructed by working from
left to right. For each square
that is linked in write a '1'
and for every empty square put
a zero. For instance, in a
square with line one being
white, white, black, white,
white, black, white white.
When you have all eight numbers
corresponding to the lines of
the grid LOAD the
binary/decimal converter which
can be found elsewhere in the
booklet. Type each of the
binary numbers in, starting
from the top of the grid and
note the decimal values which
the conversion program returns.
At the end you should have
eight decimal values. Those can
be put straight into a data
statement in the utility
program below (line 50) .
10 FOR K 0 TO 7
20 READ A: POKE USR "A"+K,A
30 NEXT K
40 PRINT-CHARACTER STORED w
50 DATA 0,0,0,0,0,0,0,0
Line 10 of the program sets up
a loop which will go round
eight times reading the decimal
values of the DATA statement
into the UDG area of memory.
Line 20 does the reading and
POKEs, or puts, those values
into the UDG area. The
character between quotes in
line 20 is the graphics
character which you want to
change to the new
representation .
Line 30 completes the loop and
line 40 tells the programmer 8
that the set up procedure for
that particular graphic has
finished. Line 50 contains the
decimal values which you
obtained from the
binary/decimal converter and in
turn from the graphics
character grid.
7. > USING UDGs.
Once set up* a UDG can be used
in two ways within a BASIC
program. The first way is to
enclose it within a normal
PRINT statement in quotation
marks. When you have typed up
to the point where you want to
put the graphic character into
a PRINT statement go into
graphics mode by holding down
the CAPS SHIFT key while you
press the GRAPHICS key on the
top row of the keyboard. Then
type the key which will print
the letter of the alphabet
which you are using for the UDG
- 'A 1 , for instance.
When you press the key you
should get a capital 'A*
because the new representation
is not set up until your
program is run. Once you press
the RUN key and then break
after setting up is complete,
you should see that the
graphics capitals in the
LISTing have changed to the
spaceships, rockets or aliens
which you created using the
character generator routine.
The other way to display UDGs
is simpler but you have to use
the command CHR and the code
number of the graphic which you
want to appear. Those codes can
be found on page 183 of your
Spectrum manual. For instance,
the code for the graphic 'A' is
144. To display that character
all you have to do is type:
PRINT CHR$(144)
8. > ANTI-PIRACY.
Software piracy is a scrounge
which is not easily eliminated.
Most professional software
companies incorporate anti-
piracy devices within programs
so that they cannot be broken
into and copied, or the code in
which they are written listed.
Security has always been a
problem with BASIC programs as
listings are easily accessible
even when auto - run. There is
only one simple way to combat
the problem without resorting
to machine code and that is to
close off the avenues through
which pirates can enter.
To get into a BASIC program
which is running, the BREAK key
is used and an error message is
printed is printed at the
bottom of the screen. The
screen is made up of two parts
- the lower half having access
to a stream of information
called #0. To stop a break -
in, CLOSE down the stream. If
information, such as an error
message, tries to access it an
error occurs and the system
crashes.
In order to gain benefit from
that knowledge all you have to
do is make line 1 of any
program you wish to protect:
1 CLOSE #0
9.> SOUND EFFECTS.
There is no doubt that sound
is not the Spectrum's finest
feature. It is very difficult
to write anything remotely
musical; you only have to
listen to the hideous tunes
produced by professional
programmers to realize that.
It is possible, however, to do
rather more than a few simple
BEEPs at the beginning and end
of the program. Experimentation
is the key, but here are a few
simple ideas to try out.
If your program requires single
key input - for example, in
choosing items from the menu -
why not alter the length of the
click made by the keyboard? You
can do that by the instruction
POKE 23609, x where x is the
length of the click. Use any
number from 0 to 255 until you
find one you like.
Sirens are fairly easy. The
secret is to slide from one
note to another with very short
BEEPs and then back again. Here
is a short siren routine: 9
10 FOR X=0 TO 10 STEP .5
20 BEEP .02,X
30 NEXT X
40 FOR X=10 TO 0 STEP -.5
50 BEEP .02,X
60 NEXT X
The smaller the value after
STEP, and the smaller the
duration of each note, the
smoother the sound.
The really revolting sounds,
however, are produced by mixing
two BEEPs together. The
Spectrum has no facility for
doing that, but you can
alternate two sounds fast
enough to create a nauseating
tremolo which can form the
basis of a variety of noises
from screeches to explosions.
Here is one such piece of aural
violence :
10 FOR X=-10 TO 10 STEP 2
20 FOR Y=l TO 4
30 BEEP .02, .5
40 BEEP .02,X
50 NEXT Y
60 NEXT X
Because the two sounds are, on
their own, very short, there
needs to be a loop to repeat
them a sufficient number of
times for the noise to register
in all its glory.
10.> NOVEL CRASHES.
Crashing, or bombing out, a
Spectrum has become a
spectators sport and many users
have become fascinated, if not
irritated, by the ways in which
a Spectrum goes to pieces.
If you want to do it simply and
deliberately one of the best
ways is to type:
PRINT USR 1000
The machine should give off a
buzz, the keyboard will become
inoperable and a black border
will appear on the screen. If
you want to show how clever you
are print SINCLAIR USER IS THE
GREATEST on a Spectrum at a
show or in a shop and then do
your PRINT USR. The rest cannot
be cleared without pulling the
plug.
If you want something a little
more colourful, but which does
not give an irretrievable
crash, then type:
RAND USR 5050
A multicoloured rectangle will
appear on the screen followed
by the Sinclair logo
effectively resetting the
machine .
Finally, if you have an EPSON
FX-80 printer attached try:
RAND USR 600
11. > ROM BORDER.
It is possible to change the
colours output to the border
with a simple call to the
Spectrum ROM.
The call is made to the
operating system and the effect
which you will get is similar
to that obtained when SAVEing a
computer program. First the
blue and red bands, marking the
header of the SAVEd program are
shown and then the thinner blue
and yellow bands of SAVEing. As
no header information is
available you will find that
only one thick header signal
is given. The command is:
RAND USR 1221
and the effect can be used in
games to add effects during
fight sequences or to show off
a title page.
12. > OUT BORDER.
The colour of the screen border
can also be changed using the
OUT instruction which normally
sends out a specified signal to
a peripheral or device which is
clipped onto the end of the
buffer at the back of the
machine.
It can also effect the screen
on which its signals are
represented as colours. In
order to make use of the border
in this way it is necessary to
develop a short loop routine
such as the one below.
10 FOR K = 1 TO 100
20 PAUSE 5 10
30 OUT 254, K
40 NEXT K
Try the routine and you will
find that colours flash on and
off the border. If you make the
PAUSE number greater the
colours will run through a
slower sequence. A smaller
PAUSE number, except of course
zero, will speed up the colour
cycle.
The advantage of using the
routine rather than a ROM call
is that you have more control
over the timing of the effect.
13.> FOOLPROOF INPUTS.
Writing the perfect program is
not much use if imperfect human
beings are capable of crashing
it. When users are called upon
to enter instructions it is
normal to use the INPUT
command, but that can cause
problems. Efficient programmers
ensure that even if the user
makes a mistake the program
will not crash.
The best thing to do is use
INKEY$ wherever possible. That
can only be done simply with
single characters as input, but
it does prevent problems with
incorrect input.
The line 10 INPUT X$ will fail
if the inverted commas at the
bottom of the screen are
deleted accidentally. Replace
with:
10 LET X$=INKEY$
20 IF X$= nn THEN GO TO 10
Line 20 is necessary to make
sure that the program will not
continue unless a key is
pressed.
[In the above example the
machine is doing unnecessary
processing, I prefer:
10 PAUSE 0
20 LET X$=INKEY$
Line 10 Is necessary to make
sure that the program will not
continue unless a key Is
pressed. - Ed.]
But what if a number is
required and not just any old
character? Just add the line:
30 IF((CODEX$)<48)OR((CODEX$)>
57 THEN GO TO 10.
This will check that a number
key has been pressed by
examining the code of the
character in question.
If you are using a menu the
above method is by far the
best, and as long as the
relevant options are indicated
by a consecutive block of
letters or numbers the limits
for the codes can be changed as
appropriate .
If the program requires more
than one character to be
entered at a time, the INKEY$
routine could be made a
subroutine and each individual
character checked in turn to
make sure it is of the right
type. In that case you will
have to write some lines to
store all the different key
presses in a single string, and
then use that for text or the
VAL command to turn the string
into its numerical equivalent.
That will not entirely
eliminate the possibility of
error. It is therefore a good
idea with very important data
to PRINT it up to screen to be
visually checked, with an
opportunity for the user to
press 'y' or 'n'. - again using
the INKEY$ routine for safety -
to confirm the accuracy of the
information.
Remember, do not just be kind
to the computer, be kind to the
user as well — even if it is
only just yourself.
14.> LOW PRINT.
You mav have noticed that the
Spectrum screen display is made
up of two parts. The first and
main part controls the upper
three-quarters of the screen
and it is here that listings
and program output are
displayed.
The bottom quarter, usually
made up of two lines, is the 11
part of the screen upon which
commands can be typed and which
the Spectrum uses to ask for
INPUT during a program.
Information is output to this
and the other part of the
screen using streams. The
bottom part of the screen can
be controlled using the
reference number #0. Just as
you could close down the bottom
part of the screen using:
CLOSE #0
so you can print on it using a
print instruction suffixed with
#0. For instance PRINT #0;
"USING BOTTOM SCREEN" would put
the message between the quote
marks at the bottom of the
screen.
Other commands can also be
prefixed with #0. These include
PAPER, INK and CLS.
15. > EXPLOSIONS.
There are several ways in which
explosions can be created on
the screen. The simplest is
make the main part of the
screen flash with colour in a
loop using a routine such as
that below.
10 FOR K = 1 TO 50
20 FOR M = 1 TO 9
30 PAPER M: CLS: PAUSE 1
40 NEXT M
50 NEXT K
Unfortunately you will have to
re-draw whatever was on the
screen before the effect when
it has finished as CLS has been
used.
Alternately, you could flash
the border using the ROM
routine or loop described in
the sections on border colour
change elsewhere in the
booklet. There is also another
ROM routine which adds an extra
dimension and that is:
RAND USR 1300
It is a cross between a quick
SAVE signal and a colour.
16. > PUTTING IN ZERO.
You may have seen some programs
which start with a line
numbered 0. That is a device
used to protect programs
against piracy. If a copyright
statement is put into a line 0,
it is difficult to remove
unless you know something about
how programs are stored in
memory.
To create your own line 0, you
must first write an ordinary
line such as:
1 REM PIRATES WILL BE PROSECU
TED!
Now you must find the beginning
of the program area of memory,
which is given by PRINT PEEK
23635+256*PEEK 23636. The
number printed will be the
address of the start of the
program.
The first two bytes of any line
in a program contains the line
number, so if you POKE those
two bytes with 0 your line 1
will turn into a line 0 which
cannot be deleted or edited in
the normal way.
Thus, if the start address was
23755 you would enter:
POKE 23755,0: POKE 233756,0
and the job would be done.
17.> REMOVING ZERO.
To remove a line 0 you must
reverse the procedure outlined
in hint 16. Again, find the
start of the program area with
PRINT PEEK 23635+256*PEEK
23636.
Now you must POKE the relevant
line number into the two bytes
at the beginning of the
program.
Those bytes act as a pair, so
that numbers bigger than 255,
the limit for any one byte can
be held. If you are familiar
with Z80 machine code at all,
you might expect the two bytes
to hold the number back to
front, with the 'least
significant byte* first, like
writing 12 as 21. But that odd
convention is not used for line
numbers on the Spectrum.
Because you can hold up to 255
in the second byte, the first
byte stands for 256s. To find
out how your line number should
be POKEd in, divide it by 256
and note the remainder. Then
POKE the answer to the division
into the first byte, and the
remainder into the second byte.
For example, if the start
address was 23755 and the
desired line number was 1, you
would enter: POKE 23755,0: POKE
23756:1. If you wanted to have
a line number 4368, you would
enter: POKE 23755, 17: POKE
23756,16 because 256 times 17
equals 4352, plus 16 equals
4368.
Remember always to use a line
number which does not exist
elsewhere in the program, or
you may get into trouble.
If you wish to remove a line 0
from a commercial program, in
order to rewrite it or hack it
for your own purposes, that is
legal. But if it is your
intention to remove the line in
order to copy the program in
some way or pass it off as your
won work, that is illegal and
may even result in criminal
proceedings. So be warned - you
may think piracy sounds
romantic but in reality it is
just another name for thieving.
18.> RENUMBER.
A renumber routine is very
useful for serious programming
in BASIC. Often the line
numbers get so crowded there is
simply no room to squeeze in
any more statements. The
renumber routine below asks for
the new start number and the
step for each new line, in
other words increasing the
numbers in ones, five's or 100s
as desired.
It works by POKEing the two
bytes which carry the line
number with a new number and
then searching for the next
line number. It will stop at
9900 rather then change its own
line numbers, *?hich would be
disastrous.
One thing it does not do is to
renumber GO TO or GOSUB
statements. That would require
a much more complicated routine
and take far longer in BASIC.
You will have to make a note of
those yourself; REM statements
are always helpful in
identifying the beginning of a
new program section.
9900 LET START=PEEK 23635+
256* (PEEK 23636)
9905 PRINT "ENTER SIZE OF
STEP": INPUT STEP
9910 PRINT "ENTER FIRST N
UMBER": INPUT NUM
9915 IF(PEEK(START+l)+256*
(PEEK START) )>=8999 THEN STOP
9920 POKE START, INT (NUM/ 2 5
6) : POKE START+1,NUM INT((NUM/25
6)*256)
9925 LET START=START+PEEK (
START+2 ) +PEEK ( START+ 3 ) * 2 5 6+ 4
9930 LET NUM=STEP+NUM
9935 GO TO 9915
19. > WHICH MODEL?
Sinclair research has so far
brought out four versions of
the Spectrum. You may not think
that matters as all the models
are bound to be the same.
Unfortunately, there are some
differences and it helps to
know which model you have in
case special instructions are
given in hardware manuals and
the explanations of some BASIC
listings provided in magazines.
To find out your model, be it
16K or 48K, type in:
10 PRINT IN 57342
There are several numeric
answers to this request for
information to be printed on
the screen. If you own an issue
one or two you should get the
number 255. Issue three owners
should get the number 191. That
is not a hard and fast rule,
however. Some users may get
161. That should not happen but
if it does your machine is
probably an issue three. They
do say that nothing in the
Sinclair world is certain.
20. > 48K TO 16K.
If you own a 48K Spectrum there
may be times when you want it 13
to behave in a fashion similar
to the 16K model.
The main reason is usually that
you want to write a program for
a 16K machine but cannot tell
when you overstep the memory
boundary on the 48K model. The
other reason is that you want
to see if a professional game
or a program LISTing from a
magazine will work on a 16K as
your friend or relative is
unlucky enough to have won one.
The method of performing the
change is slightly complicated
to explain but the use or it
simple. Just type:
CLEAR 32600
The Spectrum will then only
accept 16K programs. The reason
is that the CLEAR instruction
moves a barrier in memory
about. If you type CLEAR
without a number following it,
that barrier will move to a pre
- defined place within the RAM
giving you access to the
maximum amount of memory
available.
If you move the barrier down
the amount of memory available
shrinks as more and more RAM is
left in its wake. Moving it to
address 32600 gives access to
approximately 16K of memory.
21. > MEMORY REMAINING.
To discover how much memory is
left, you must find out where
the free space in RAM begins,
after taking account of the
length of your program, and the
amount of space eaten up by
variables. A short program
which uses an array of
dimensions (20,20,10) will take
up an enormous chunk of memory
for the array.
The Spectrum memory is arranged
so that the area for variables
and calculations is after the
area holding the program. That
location will inevitably vary
with the length of the program.
It is therefore given a system
variable called STKEND which
contains the address of the
location. Another system
variable, RAMTOP, gives the
address of the last byte of RAM
available in BASIC; there may
be memory available above
FAMTOP, but that will either be
occupied by information about
user-defined graphics or
machine code which you have
stored there yourself by
deliberately changing RAMTOP,
so that you should already know
how long that area is if you
intend to use it.
The appropriate instructions to
read those addresses and
subtract one from the other as
follows:
10 LET STK=PEEK 23653+256* (
PEEK 23654)
20 LET RMT=PEEK 23730+256* (
PEEK 23731)
30 LET MEM=RMT-STK
40 PRINT "MEMORY REMAINING
= "; MEM; "BYTES"
22.> PROGRAM LENGTH.
To find the length of a program
written in BASIC, it is
necessary to discover the
addresses of the beginning and
end of the section in RAM which
holds it.
Luckily, the computer knows
those addresses or it would not
be able to find the program
itself. The beginning is
indicated by a system variable,
START. The end is indicated by
another variable, VARS, which
is in fact the start of the
variables area, which is space
reserved for the variables set
up by the program. That area is
located directly after the
program itself.
The following instructions will
print the number of bytes
occupied by the BASIC program,
by PEEKlng the contents of both
system variables and
subtracting the one from the
other .
10 LET PRG=PEEK 23635+256*
(PEEK 23636)
20 LET VRS=PEEK 23627+256*
(PEEK 23628)
30 LET LEN=VRS-PRG
40 PRINT " PROGRAM IS";LEN;"
BYTES LONG"
Remember that the length of the
program is not the same thing
as the space used when the
program is running and all the
variables have been set up.
23. > MONETARY FORMAT.
Many business programs require
some form of monetary input
showing figures in pounds and
pence . Unfortunately some
business users are not as adept
at figures as they should be
and press extra keys giving the
computer ridiculous numbers .
You would look silly if your
balance showed a total of
$50.03233.
The program below will look at
each input number and chop off
any extra figures entered. It
will also give the number a
pound sign as a prefix.
10 INPUT A
20 LET A$=STR$ (A)
30 FOR K=l TO LEN A$
40 IF A$(K TO K) ="." THEN LET
B=K
50 NEXT K
60 LET B$=A$(B TO)
70 LET B$=B$(1 TO 3)
80 LET A$(l TO B-l)+B$
90 PRINT VAL(A$)
Use the routine as a subroutine
in one of your programs and any
value input to variable 'A'
will be formatted.
24. > JOYSTICK COMPATIBLE.
Using a joystick to control
action within one of your own
BASIC programs may seem
difficult but nothing could be
easier. It is only the Kempston
'standard* with which you may
have difficulty.
Most of the other interfaces
use the character codes
generated by the cursor keys.
For instance, if you pushed the
joystick to the left the
Spectrum would register the
code 08.
The Kempston interface is not
so simple to use. To read it
you can use the program routine
below.
10 LET JOY = IN 30
20 IF JOY = 3 THEN PRINT "UP"
30 IF JOY = 4 THEN PRINT "DOWN"
40 IF JOY = 1 THEN PRINT "RIGHT
n
50 IF JOY = 2 THEN PRINT "LEFT"
60 GO TO 10
As soon as you push the
joystick in a new direction the
IF . . . THEN statements will check
the direction in which the
change has been made. You can,
of course, turn the program
into a subroutine and put your
own actions after THEN. If you
want the "fire" option active
within your game you will have
to add an extra line to the
program.
55 IF JOY =16 THEN PRINT "BANG
25.> COLOUR CODES.
There are two ways to use
colour on the Spectrum. One is
to write INK and PAPER
statements to set the colours
you want, the other is to use
control codes.
The colour control codes are
the easiest to use because the
keys you use have the colours
written over them.
To use a colour control code,
go into Extended Mode - CAPS
SHIFT and SYMBOL SHIFT -. Then
hold down CAPS SHIFT and press
the key with the appropriate
colour. The cursor will change
colour, and any character typed
will now be in the appropriate
colour.
If you delete the line, you
will find the cursor deletes a
hitherto unseen question - mark
at the point where the colour
was changed. That is the
control code, invisible in the
program LISTing but stored in
the computer memory all the
same.
You must remember to use
another colour code at the end
of the colour section to return
to the original colour, usually
black ink on white paper.
The colour code only affects
the ink colour. If you want to
change the paper colour you
could either use PAPER or
perhaps an additional code for 15
inverse Video, thus swapping
the paper and ink colours
around. You can write codes in
a row to get the required
effect.
The Spectrum should usually
handle control codes perfectly,
but sometimes produces the
'dreaded buzz 1 at which point
the computer issues a low growl
and refuses to accept any
input, including delete.
To deal with the buzz, just
EDIT a line down from the main
program to wipe out the current
line and start again.
The precise causes of the buzz
are beyond the scope of this
booklet. Think of it as one of
those idiosyncratic Clivebugs
which we must all learn to
love.
26.> CHARACTER CODES.
Character control codes can be
used in place of functions such
as SPACE, ENTER, CAPS LOCK and
can also be used to print
characters on the screen.
If you want to print a
character without having all
the bother of enclosing them
within quotation marks you can
use the principal control code
instruction which is CHR$. For
instance if you wanted to type
the message "HELLO" on the
screen you could either print:
PRINT "HELLO"
or you could use the command:
PRINT CHR$(72)+CHR$(69)+CHR$76+
CHR$(76)+CHR$(79)
Those codes can be found on
page 183 of the Spectrum manual
and each letter is put in a
separate CHR$ statement. The
■+• operator adds one character
to another so that they appear
on one line together. You could
force a new line just by
putting the control code in
between the letters. The code
of ENTER is 13 so the line
PRINT CHR$(65)+CHR$(13)+CHR$(66
)
will produce 'A' followed by
'B' on the next line.
27.> INVERSE VIDEO.
Using inverse video is as easy
as using the colour codes, but
people get confused because
there are several ways of doing
it, notably two INVERSE keys.
The one at the bottom of the
keyboard (E-mode key M) is a
command just like PAPER and
INK. You follow it with a 1 for
inverse and a 0 to cancel the
command.
Key 4 has Inverse video printed
above it, and in conjunction
with CAPS SHIFT produces the
control code which will turn
any further characters into
inverse form.
Key 3 is the control code to
reverse the operation. Remember
that, unlike the colour control
codes, you do not go into
Extended Mode to get the codes.
Just hold down the CAPS SHIFT.
One set of codes Sir Clive did
not print on the keyboard are
those for making the characters
flash. They can be found by
going into Extended Mode,
holding down CAPS SHIFT, and
pressing keys 8 and 9. Key 9
turns the flash on and key 8
turns it off.
To make matters even more
complicated, a completely
different method is used to
obtain the inverse of the block
graphics on keys 1 to 8. To get
those, all you need to do is
hold down CAPS SHIFT while in
graphics mode.
When the ZX-81 was produced it
had all the block graphics
possible each on its own key.
But there were so many extra
functions to include on the
Spectrum that the set got
chopped in half, with one half
the inverse of the other half.
The change is an excellent
example of what computer manu-
facturers call 'enhancement',
usually a new way of doing
things which makes life twice
as difficult for the user. 16
28. > SOFT-RESET.
When programming in BASIC it is
annoying to have to pull the
plug every time you want to
remove some user defined
graphics quickly from the
graphics area of memory or
nullify the effects of a
program so that the system is
reset.
It is possible, however, to
reset the system:
Rand USR 0
When you type the command in
and execute it by pressing
ENTER the screen should display
a large black rectangle which,
after a few seconds will
disappear to be replaced by the
Sinclair logo.
The explanation is simple.
Typing - RAND USR will invoke
machine code at a specified
address. The number zero,
after the command, sets the
Spectrum running at address
0000 which is the start of the
BASIC interpreter and operating
system.
29. > SHORTHAND LOGIC.
Although BASIC was designed to
be as like English as possible,
the logic operations: AND, OR,
=, < and so on are
often confusing unless used in
very simple forms. In fact,
used properly, they can
increase the speed of a
program.
In Sinclair BASIC, the
expression IF A=B THEN GO TO
100 has an obvious meaning.
However, the computer works the
meaning out in a rather odd
way. The expression A=B is
treated as a number, just like
SIN X has a numerical value.
The value of A=B will be 1 if
true and 0 if false. The same
applies to other operations.
That allows you to rewrite
complicated IF statements in a
shorthand logic which relies on
the numerical values.
Take the line:
10 IF A=B THEN LET X=X-1
That could also be written as
follows :
10 LET X=X-(A=B)
If A does not equal B then X
does not change. If it does
then 1, the value of A=B, is
subtracted from X.
There will be already a small
saving in speed but because IF
is no longer used, a number of
similar conditions can be added
together .
10 IF A=B THEN LET X=X+1
20 IF A>B THEN LET X=X-1
30 If A<B THEN LET X=X+7
can be written:
10 LET X=X+ (A=B) - (A>B) + ( (A<B) *
7)
Good programmers may use a
dozen or more such conditions
in a single line to save both
time and space.
The concept can be expanded
using the following further
facts: (A OR B) is 1 if either
A or B is not equal to zero. IF
A THEN LET X=X+1 means exactly
the same as IF A<>0 THEN LET
X-X+l. (A AND B) has the value
of A if B is not equal to zero.
(NOT A) is 0 if A is not zero.
The full list can be found on
page 64 of the original
Spectrum manual.
Logic operations are not easy
to follow without practice, but
when mastered you will find
your programs are far more
efficient and less likely to
carry mistakes than if you use
dozens of IF statements.
30.> BETTER DRAW.
Drawing line figures on the
screen is irritating because it
usually means that you have to
write lines containing long
lists of coordinates mixed up
with DRAW and POINT commands.
A simple way around that is to
write a subroutine consisting
of one DRAW command. Then set
up your coordinates in an
array and feed them through two
simple variables called x and
17
y. In that way you will be
better able to keep track of
what you draw on the screen.
The routine will look something
like the program outlined
below.
10 DIM A(6) : REM EVEN NUMBERED
ARRAY FOR CO-ORDINATES
20 SET UP. . .
30 AS MANY. . .
40 VARIABLES. . .
50 AS YOU NEED. . .
60 LET X=NEW X CO-ORD
70 LET Y=NEW Y CO-ORD
80 GOSUB DRAW
90 REM SUBROUTINE DRAW
100 DRAW x r y
110 RETURN
Take above outline as your
guide and you will find writing
graphics routines easier.
31. > NUMERIC SORT.
Sorting information into
ascending order is something
with which business people are
familiar. The program below is
a simple sort routine. It takes
numbers from one array and
transfers them in order of
ascendancy into another.
10 LET N=0
20 DIM A(5)
30 FOR K - 1 TO 5
40 INPUT A(K)
50 NEXT K
60 LET B= A(l)
70 DIM C(5)
80 FOR M = 1 TO 5
90 FOR K = 1 TO 5
100 IF A(K)B THEN LET B=K:LET
D=K
110 NEXT K
120 LET C(N)==A(D)
130 LET N - N+l
140 LET AD = 9999
150 FOR K = 1 TO 5
160 PRINT C(K)
170 NEXT K
32. > SORTING CHARACTERS.
Sorting characters into
alphabetical order is no more
difficult than sorting numbers.
The only problem is that you
have to find the numeric value
of each character using the
CODE instruction.
In the alphabet the letter A
comes before the letter B.
Unfortunately the computer has
no such knowledge but as each
character has a number
representation you can compare
the values the IF... Then
statement .
The simplest way to sort a
string of characters, making
sure that they are all capital
letters, is to dimension three
variables. The first is empty
but will hold the result, the
second holds the string to be
sorted and the third is the
letter under consideration or
the last lowest value
character .
Look at the first character in
the string and store its value.
Then look at the second
character. If the value of the
second character is lower than
that of the first then put that
value into the variable,
replacing the first one. Then
go to the next character on the
string and compare it with the
last value.
When you get to the end of the
string the first time around
put the character whose value
is in the variable into the
empty string. Then check to see
if the two strings are of the
same length. If they are not
then the sort has not been
finished and a further round of
comparisons must take place.
After the first round of
comparisons has been made,
however, a new variable must be
defined. That contains the
value of the last letter put
into the string which you are
building out of nothing. Then
every comparison must satisfy
two conditions. Is the value
lower than the preceding one
and is it higher" than the last
letter entered into the string
which is being built? If the
answer is yes to both
conditions than the value
replaces the old lowest value
and the comparison continues.
Comparisons will continue to be
made until the two strings are
equal, that is, they have the
same number of characters in
each, the latter being sorted
into alphabetical order.
33. > AUTO CAPS LOCK.
When you are writing a program
which needs to recognize pieces
of text entered via the
keyboard by the user, the last
thing you want to do is check
every input to see if the CAPS
LOCK is on or lower case
letters are being used.
The best way to avoid that is
to put the CAPS LOCK on
automatically within the
program before asking for
information.
POKE 23658,8
The address 23658 tells the
computer which cursor mode it
is in. K means command, L means
line and C means Capital
letters. The above command will
give you a ' C cursor and
typing INPUT will provide you
with capitals. Type in the
program below and you will see
for yourself.
10 POKE 23658,8
20 INPUT A$
30 PRINT A$;
40 GOTO 10
34. > BINARY/DECIMAL.
The following program converts
Binary numbers into decimal.
You may find it useful for
working out the correct decimal
numbers for UDGs - see tip 6 -
as well as other uses.
10 REM BINARY TO DECIMAL
15 LET DEC - 0
20 PRINT "ENTER BINARY NUMBER"
30 INPUT A$
40 LET X=LEN A$
50 FOR N=X TO 1 STEP -1
60 LET DEC=DEC+VAL (A$ (N) ) *21 (X
-N)
70 NEXT N
80 PRINT 'DECIMAL VALUE OF";A$
»;DEC
90 STOP
35. > DECIMAL/BINARY.
The following program will
convert decimal numbers into
binary.
10 REM DECIMAL TO BINARY
20 PRINT "ENTER DECIMAL NUMBER
at
30 INPUT X:LET DEC=X
40 LET A$=""
50 IF INT (DEC/2 )= (DEC/2) THEN
GO TO 100
60 LET A$="l"+A$
70 LET DEC=DEC-1
80 IF DEC=0 THEN GO TO 150
90 GO TO 110
100 LET A$="0"+A$
110 LET DEC=DEC/2
120 GO TO 50
150 PRINT "BINARY FOR";X; "IS" ' *
;A$
160 STOP
36. > HEX TO DECIMAL
It is often necessary to
convert a hexadecimal value
into denary, or base 10, in
order to poke those values
straight into memory. As you
may realize most magazines list
machine code programs in
hexadecimal code. The program
below will convert hex to
denary.
10 LET SUB=1 : LET DEC=0
20 INPUT "HEX"; X$
30 LET N$=X$(LEN X$)
40 LET X$=X$( TO LEN X$-l)
50 GO TO 120
60 IF LEN X$ THEN GO TO 30
70 PRINT "DENARY w ; DEC
110 STOP
120 LET F=CODE N$
130 IF F<=57 THEN LET L=F-48
140 IF F=>65 THEN LET L=F-55
150 IF F=>97 THEN LET L=F-87
160 LET DEC=DEC+L*SUB
170 LET SUB=SUB*16
180 GO TO 60
37. > DECIMAL TO HEX.
As many monitor programs
display machine code in the
hexadecimal number notation,
where one to nine is followed
by A to F, representing numbers
10 to 15, a conversion program
for decimal to hexadecimal is
required. In the program below
all you have to so is type in
the denary, base ten number,
and it is automatically
converted to hexadecimal, base
16.
10 INPUT -DENARY:-; DEN
20 LET BAS=4096
30 LET X$=" n
40 LET SUB=INT (DEN/BASE)
50 GO TO 130
60 LET DEN=DEN-SUB* BASE
70 LET BASE=INT (BASE/16)
80 IF BASE<1 THEN GO TO 100
90 GO TO 40 19
100 FOR K=l TO 3:IF X$(l)= n 0 n T
HEN LET X$=X$ (2 TO) :NEXT K
110 PRINT "HEXADECIMAL: ";X$
120 STOP
130 IF SUB<=9 THEN LET X$=X$+CH
R$(SUB+48)
140 IF SUB>9 THEN LET X$=X$+CHR
$ (SUB+55)
150 GO TO 60
38. > STRING SEARCHING.
To search for a string within
another string you will need
two string variables. The first
contains the string upon which
the search is to take place and
the second contains the string
for which we are searching. The
program below demonstrates the
procedure .
10 INPUT "MAIN STRING" ;M$
20 INPUT "SEARCH KEY";S$
30 FOR K = 1 TO LEN (M$)
40 IF K LEN(S$)>LEN(M$) THEN G
0 TO 60
50 IF S$ = M$(K TO (LENS(S$))
THEN PRINT "MATCH AT ";K
60 NEXT K
Line 10 asks for the main
string to be entered and line
20 accepts the string for which
you are searching within M$.
Line 30 sets up a string which
will loop until all of M$ has
been searched. Line 40 will
make sure that M$ is long
enough to cope with a search
using the S$ key. If S$ was
bigger than M$ an error could
occur. If that is the case the
comparison is skipped and the
loop is executed harmlessly
until it has finished.
Line 50 performs the search. It
compares S$ to the part of the
M$ starting at character 1,
then continues with character 2
and so on. If a match is made
the placing at which it is
found within M$ is printed. If
no match is found no message
printed.
39. > CENTERED TEXT.
The following routine examines
a string of text and centers it
on the screen so that the left
and right margins are equal.
Although the routines requires
you to enter a line of text,
which should not contain more
than 32 characters, it is best
used in the form of a
subroutine in part of a longer
program to deal with headings
and the like.
10 PRINT "ENTER YOUR LINE OF T
EXT"
20 INPUT A$:CLS
30 LET X=LEN A$
40 LET X=INT(32-X)/2
50 PRINT AT 0,X;A$
60 STOP
If you want to center more than
one line of text, change the 0
in line fifty to a variety such
as Y. Then arrange to have Y
increase by one each time the
routine is used, so that the
lines will be printed one under
the other.
40.> RANGING RIGHT.
Sometimes, when printing text
on the screen, it is desirable
to have a right hand margin
straight and the left hand
margin ragged, the reverse of
normal procedure.
The following routine takes a
line of text, which must be no
more than 32 characters long,
and prints it to the right hand
margin.
10 PRINT "ENTER LINE OF TEXT"
20 INPUT A$: CLS
30 LET X=32-LEN A$
40 PRINT AT 0,X;A$
50 STOP
The routine is obviously of
greater use as a subroutine to
be used when required. In that
case you would probably want to
adjust the value 0 in line 40
to indicate how far down the
screen the text should be
printed, by using a variable
which could be altered as
desired.
41 .> 255 COLOURS.
Few people realize that the
Spectrum can display more than
its allotted nine colours. It
is a simple method which
combines UDGs and the little -
used OVER instruction.
First construct two UDGs in the
chessboard fashion shown in the
two diagrams above (not given) .
Then you are ready to print new 20
colours. The program below will
demonstrate the technique and
uses the UDGs "A" and "B" which
have already been set up.
30 PRINT AT 10, 10; INK; "A"
40 OVER 1
50 PRINT AT 10, 10; INK "B"
60 OVER 0
What you should have on the
screen after running the
routine is a character square
containing a new colour.
Experiment. By controlling the
INK colour with a simple
FOR NEXT counting loop you can
cycle through all the 255
colours available.
42. > SLOW PRINT.
To add a science fiction effect
to your armory of game
programming ploys you could try
the sub-routine shown below.
10 LET A$="THIS IS A MESSAGE"
20 FOR K=l TO LEN(A$)
30 PRINT A$ (K TO K) ; : PAUSE 5
40 NEXT K
50 PRINT
You will find the printing of
the message which has been put
into the variable A$ is slowed
down by the PAUSE in line 30.
Your computer gives you a
display similar to those in the
big science fiction movies
where printing is slowed down
on the screen to give a
dramatic effect. Any self -
respecting programmer would die
rather than have a program
acting as slowly in real life
but a game display can be
enhanced especially if you
redefine the character set to
produce square, futuristic,
lettering.
43. > TEXT SEARCH.
When writing programs such as
adventure games it is often
convenient to have a string
which contains a whole series
of words and end - to - end, in
order to save space instead of
using huge arrays. The problem
is to search for a particular
word in the string.
The following program does
that, using as an example a
list of directions which, in
the context of an adventure
game, might refer to the
various movement commands.
10 LET B$="NORTHSOUTHEASTWESTU
PDOWN"
20 INPUT "ENTER YOUR WORD";A$:
IF A$=""THEN GOT TO 20
30 LET X+LEN B$-LEN A$+l
40 LET N=l
50 IF B$(N TO LEN A$)1))=A4
THEN GO TO 100
60 IF N=X THEN GO TO 200
70 LET N=N+1 : GO TO 50
100 PRINT "YOUR WORD IS IN THE
LIST"
110 STOP
200 PRINT "YOUR WORD IS NOT IN
THE LIST"
210 STOP
Of course, in a real adventure
game you might also want to
check the validity of the word
found, to avoid the program
accepting something like "UP
DOWN" which is in the string.
That might be done by having
spaces between the words, and
checking the characters on each
side of the word found. There
might also be a set of numbers
or characters after each word
which the computer would use to
implement the instruction: for
instance, the number of a
subroutine to perform the
action "GO NORTH".
44.> HEX LOADER.
The following program will
allow you to enter a block of
machine code in hexadecimal
form. You may . input as many
pairs of hex code characters as
you wish, and the letter S will
stop the program when you have
finished.
The program first asks for the
starting address to which the
code is to be sent.
10 INPUT "STARTING ADDRESS"; ST
20 INPUT "ENTER STRING OF
HEX";A$
30 IF A$=""THEN GO TO 20
40 IF A$(l)="$" THEN GO TO 130
50 LET A=CODE A$ (1) :LET B=CODE
A$(2)
60 LET A=A=(A>64)*55-(A<58)*48
70 LET B=B-(B>64)*64)*55-(A<58
)*48
80 LET C=16*A+B
90 POKE ST, C; LET ST=ST+1
100 IF LEN A$=2 THEN GO TO 20
110 LET A$=A$ (3 TO)
120 GO TO 40
130 STOP
Do remember to enter all the
letters in the hex code as
capital letters.
45.> FILL.
You can draw lines and circles
on the Spectrum, and it is easy
to link them to form all sorts
of shapes. But unfortunately
there is no command you can use
to colour them in.
There are several ways of
filling in shapes. One is to
draw a series of lines one on
top of the other, instead of
the outline, but that requires
a formula for the shape. It is
easy with triangles or squares
but more complex with curves or
irregular shapes.
The following program is one
solution to the problem. It
examines each pixel in turn,
scanning from left to right
across the screen. When it
finds a dot, it starts drawing
a row of dots until it comes
across another one. The program
is slow, but it does the job; a
really good fill routine would
require machine-code, which is
beyond the scope of this
booklet.
As an example, the program
starts by drawing a square.
10 CLS
20 PLOT 165,120: DRAW 0,-81:DR
AW -81,0: DRAW 0,81: DRAW 81,0
30 LET KON = 1
40 FOR Y=175 TO 0 STEP -1
50 FOR X=0 TO 255
60 IF POINT (X,Y)=1 THEN LET KO
N=l-KON
70 IF KON<l THEN PLOT X,Y
80 NEXT X
90 NEXT Y
The program is very slow. In
can be improved by altering the
limits of the variables x and y
in lines 40 and 50. At present
they cover the whole screen,
but if you know the area in
which the shape it be filed is
located, then you could have
the program scan only that
narrow range.
46.> CHARACTER CHANGE.
User defined graphics are all
very well, but there are only
21 of them. If you want more
you can completely rewrite the
character set. To do that you
must construct your own
characters, store them in
memory, and then convince the
Spectrum to use yours instead
of those in ROM.
It is not as difficult as it
sounds, Let us assume you want
to alter the alphabet and
numbers only, which will leave
the keywords and the like
unchanged thus avoiding too
many problems reading your
program LISTing. It will
nevertheless give you 82
possible UDGs, which should be
more than enough.
The following program will do
the job. Numbers underlined and
in brackets are equivalents for
the 16K Spectrum.
10 CLEAR 63999(30999)
20 FOR X=0 TO 767
30 LET Y=PEEK(15616+X)
40 POKE 64000 (31000) +X,Y
50 NEXT X
The program simply transfers
the existing character set to
an area above RAMTOP. You are
now set to alter those
characters you wish to change.
Prepare your character set as
if you were using user define
graphics. To load them in, use
the following routines:
For the numbers 0-9
60 FOR X=64128 (31128) TO 64207
(31207)
70 READ NUM
80 POKE X, NUM
90 NEXT X
100 DATA. .....
The data statements contain the
new design for the character as
in creating UDGs, i.e. a series
of eight numbers for each
character, either as decimal or
binary numbers using BIN. For
capital letters change line 60
to:
FOR X=64264 (31471) TO 64471
(31471)
For lower case letters change
line 60 to:
FOR X=64520 (31520) TO 64727
(31727)
If you want to change the
entire set, use the values for
X given ir the first prcoram in
line 60 of the second.
Having completed the hard work,
you are now set to fool the
computer into preferring your
set over its own. When the
computer wants to print a
character, it looks at a system
variable called CHARS, which
contains the address in ROM of
the character set. You can
change that address to make it
refer to your own set.
The following instructions make
the appropriate change:
10 POKE 23606,0(24)
20 POKE 23607,249(12)
You will of course want to save
the new character set and load
it in to one of your programs
later. Save it using SAVE
"name' 1 CODE 64000 (3100) , 768 and
LOAD it in using something
like:
10 CLEAR 36999(30999) :LOAD""CO
DE
at the beginning of the
program.
47.> UST FILES.
The following programs lists
the names of programs on a tape
and loads the one selected. It
stores the names of up to ten
programs, and each name can be
up to ten letters long. Machine
- code programs should be given
a name starting with the letter
"X".
10 REM LISTING PROGRAMS
20 DIM A$(10,10)
30 PRINT w PRESS , L'FOR A LIST OF
PROGRAMS" ' "PRESS 'N' TO NAME PROG
RAMS"
40 GO TO 50+(INKEY$="L")*50+(I
NKEY$="N")*100
50 GO TO 40
100 CLS
110 PRINT # 0; "SELECT A TO J TO
LOAD PROGRAM"
120 FOR X=0 TO 9
130 PRINT AT X,0;CHR$(X+65) ,A$(
X,l TO)
140 LET B$=INKEY$
150 IF B$=""THEN GO TO 140
160 GO TO 170- (((CODE B$)<65)OR
((CODE B$>74))))*30
170 LET NUM=(CODE B$)-64
180 CLS : PRINT "START TAPE AND PR
ESS ANY KEY": PAUSE 0
190 IF A$ (NUM, 1 ) ="X"THEN GO TO
300
195 LOAD A$(NUM,1 TO) : STOP
200 CLS
210 FOR X=0 TO 9
220 PRINT AT X, 0;CHR$ (X+65) ,A$ (
1 TO)
230 NEXT X
240 PRINT"" "TO CHANGE OR ADD NA
ME, " 1 "PRESS LETTER AND ENTER NA
ME"
245 PRINT "PRESS $ TO STOP"
250 PRINT "START M/C NAMES WITH
THE LETTER X"
260 LET B$=INKEY$;IF B$="" THEN
GO TO 260
265 IF B$»"$" THEN GO TO 30
270 IF (((CODE B$<65)OR (CODE B$
> 75) THEN GO TO 260
280 INPUT "ENTER NAME";C$:IF LE
N C$>10 THEN GO TO 280
290 LET A$(76-CODEB$)=C$:GO TO
200
300 LOAD A$(NUM,1 TO) CODE: STOP
400 SAVE "FILE" LINE 30
Two notes: Always write your
program name . in capital
letters, and always save the
program by typing GO TO 400.
48.> ANIMATION.
Animation of a character could
not be simpler but it is the
most effective technique which
can be used on the screen.
Firstly you must design the
character which you want to
animate and put it in a
character square. Then make it
into a UDG using the techniques
outlined elsewhere in this
booklet.
Then using character squares
again, show the positions into
which your characters can get.
For instance a stick man or 23
woman might move arms or legs
up and down. Design UDGs which
illustrate that the final
positions into which the limbs
will move.
Now to the animation. Print the
first character which you
designed onto a position on the
screen. From here you will have
to make a choice. If your
character is to stand still,
use the sequence of movements
which you have created with
UDGs in the same position. As
you print one, then the next
and then the next, so the
impression of movement will be
achieved. The effect is rather
like sketching many pictures if
a pin man hundreds of times on
different pages in an exercise
book but in different poses. As
the pages are flicked so the
pin man appears to move.
If you want the man to move
about the screen you can use
the PRINT AT instruction to
move him up, down or across the
screen. The movement effect
will be the same and the eyes
will be deceived.
49.> CONTROL KEYPAD.
A control keypad is simply a
set of keys to manipulate what
is displayed on the screen,
usually to move an object
around such as the hero of an
arcade game.
The following routine uses keys
Q, A, 0 and P for Up, Down,
Left and Right to move a
character one space at a time.
It also checks to ensure the
character does not move off the
edge of the screen. The
character used is "?", and
starts at coordinates-ordinates
10,15:
10 REM CONTROL PAD
20 LET X=10:LET Y=15
30 LET X=X+ (INKEY$="P n ) - (INKEY
$="0")
40 LET Y=Y(INKEY$="Q")+(INKEY$
="A")
45 GO TO 50+(INKEY$="S")*50
50 LET X=X- (X>31 ) + (X<0 ) : LET Y=
Y-(Y>21)+(Y<0)
70 PRINT AT Y,X;"?"
80 GO TO 30
100 STOP
Lines 30 to 50 use logic
operations instead of IF
statements. A full explanation
is given in tip 29. Line 45
makes the program stop if "S"
is pressed, and go to line 50
if not.
50.> RANDOM NUMBERS.
If you use the RND function on
its own you will get a result
which falls between 0 and 1. It
is, of course, real and
contains a decimal point. Try
PRINT RND and you will see the
effect.
In order to get a range of
integers you must use the INT
function. For instance, you may
want to find a random number in
a dice throw, one to six. To do
that use the formula:
INT (RND end-of -range) start - of
- range
The dice would, therefore, be
simulated using:
PRINT INT(RND*6)+1
If, however, you wanted a range
between three and seven you
would type:
PRINT INT (RND* 5) +3
The random number generator can
also be set by using RAND,
followed by a number or not.
Random numbers are not
calculated: they are looked up
in a table of figures. If you
type RAND 3 the ' Spectrum will
start by giving the third
number in the table followed by
the fourth and so on.
If RAND is used without a
number the computer will start
at a point determined by the
number of separate television
frames generated since the
Spectrum has been switched on.
That should be rando m enough
for you.
FOR SALE: ON 921003
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
64K COC02; DISK DRIVE 0
CONTROLLER; CASS & CABLES; 2
JOYSTICKS; MPI; $75
CALL BARRY AT 708-742-7775
To put an AD in the BBS and
newsletter, upload a file with
the filename. filetype:
TSNUGxxx.ADS
where xxx is your initials.
! ! ! Our ADS are free ! ! !
Your ADS appear in FOUR
different newsletters!
WANTED: ON 921025
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
MEMOTECH ASSEMBLER MODULE FOR
THE ZX81.
FERDINAND GUNTHER
1307 SHAW
MOSES LAKE, WA 98837-3133
WANTED: ON 921125
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Used LarKen Disk Drive
interface for TS2068. Call Bob
during the week at 708-576-8068
WANTED: ON 930304
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Used LarKen DOS Board
Robert Webster 314-645-5989
WANTED: ON 921125
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
LOOKING FOR RARE SINCLAIR ITEMS
- ZX80 - SINCLAIR WATCH,
TV, JOYSTICK, ORIGINAL BOXES,
WILL BUY ANY ITEMS IF CHEAP,
MAGS, NEWSLETTERS, BOOKS.
USED QL, TS2068, TS1000, TS1500
GILLESPIE, JAMES DOUG
5860 CALAMIE DRIVE
PARMA HIGHTS OHIO 44130
WANTED: ON 921125
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- Wafers for A&J Microdrive
TS2068 version
- ARTWORX
- Your list of TS2068 stuff you
— 1 -■
wcun uu acxi . . .
MIKE STEVENS, 312 NEWTON AVE
OAKLAND CA 94606-1320
WANTED: ON 920509
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
TRACTOR AND/OR ROLL PAPER
UNIT(S) FOR MANNESMANN TALLY
MT160 PRINTER. ALSO, ANY
INFORMATION ON THE RC ALLEN (BY
LITTON WESTREX) PRINTER MODEL
NO. 88802-112
D. G. Smith, R.415 Stone St.,
Johnstown, PA 15906
FOR SALE: ON 920719
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1770 DISK DRIVE CONTROLLER
I.C.s for $9.00 each postpaid
to U.S. or Canadian addresses.
Paul Holmgren
52310 Wilton Wood Court
Indianapolis IN 46254
317-291-6002
FOR SALE: ON 930113
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ENTIRE COC03 SYSTEM INCLUDES:,
COC03 512K W/KEYBOARD EXTENDER
COC03 128K NEVER USED, COC02
W/VIDEO BOARD INSTALLED, MULTI-
PAK, CGP-220 COLOR PRINTER
W/ CABLE, RS232 DELUXE MODEM
PACK, 5.25 w &3.5 n DUAL DISK
DRIVE W/DISTO DC-7 CONTROLLER,
ADOS3, , SEGATE 40 MEG HD W/
BURKE & BURKE CONTROLLER W/CLOCK,
SPEECH SYSTEMS 'EARS' & 'SUPER
VOICE", CASSETTE CCR-81, TRS-80
TOUCH PAD.
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★it
ROM-PAKS:
DOWNLAND, RAD WARRIOR,
SPECTACULATOR, EDTASM+, SOKO-
BAN, CHESS, TYPEMATE, TETRIS,
ROBOCOP, SUPER PITFALL, DRAGON
FIRE, THEDXER (2) , MIND ROLL,
SPRINGTER, CASTLE OF THAROGGAO
★★★★★★★★★★★★★★★★★★★★★★★★★★•a****
SOFTWARE - RSDOS:
TCE BUSINESS WRITER, DISKMAX,
TCE PROOFREADER, ROGUE, BASH,
COCO MAC III W/COLOR DRIVER,
WARRIOR KING, ADOS 3, COLORS CAN,
KIDWRITER, SUB BATTLE,
EXTENDED ADOS 3, GOLD FINDER,
SUPER TAPE/DISK TRANSFER,
SHAMUS, COLOR COMPUTER ARTIST,
PRINT SPOOLER/ RQMCRACK, D.L.
LOGO, CRYSTAL CITY, DESERT
RIDER, MONEYOPOLY, MICKEY'S
SPACE ADV, KIDS ON KEYS, MICRO
ILLUSTRATOR, MARTY'S NIGHTMARE,
CARMEN SANDIEAGO, MINE RESCUE,
LEISURE SUIT LARRY, GHANA
BWANA, ALPHBET ZOO, UTILITIES
DISK, SEASTALKER, FRACTION
FEVER, DISK UTIL 2.1,
KENGSQUEST III, Z-89, & MORE!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★■a
SOFTWARE - OS9:
DESKMATE, LEVEL 2 TOOLS, HYPER
I/O, XT-ROM, CYBERVOICE, DONALD
DUCK PLAYGROUND, QUICKLETTER,
MULTIVIEW, SHELLMATE, TOOLS 2,
COCO XT-RTC, Z CLOCK, KRONIS
RIFT, M-RAM & MORE!
***★★★★*★ ***★★**★**★★*★★*★★****
CALL RICH POLK 708-576-2355
25
FOR SALE: ON 921105
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
BROKE COC03 512K W/6309
COC02 64K W/COC03 KEYBOARD
MC-10 MICRO COMPUTER
2 COLOR MICE
TANDY DELUXE JOYSTICK
HIRES JOYSTICK ADAPTER
DCM-3 MODEM
DISK CONTROLLED #26-3129
DISK CONTROLLED #26-3022
2 DSDD DRIVES IN CASE & PS
2 SSSD DRIVES IN CASE & PS
SERIAL TO PARALLEL PRNTR INTRFC
PRNTR/MODEM SWITCH
DELUXE RS-232 PROGRAM PAK
US ROBOTICS 1200 BAUD MODEM
MULT I -PAK OLD GRAY CASE
MULTI-PAK OLD WHITE CASE
TANDY 10 MEG HD W/CASE & PS
SEGATE BARE 10 MEG HD
AMBER MONITOR
ELECTRONIC BOOK
SPEECH SOUND PAK
DIRECT CONNECT MODEM PAK
STEREO MUSIC SYNTHESIZER
2 JOYSTICKS
ALL KINDS OF RSDOS AND OS 9
SOFTWARE AND BOOKS -
CALL OR WRITE IF
YOU WANT A LIST OR SEE TONY
PODRAZA.
DAN STATHAM
241 BLANCHARD ST #5203
WEST MONROE LA 71291-7385
318-324-8656
FOR SALE: ON 920509
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
LOCAL COMPUTER GROUP GETTING
RID OF EXCESS EQUIPMENT,
HARDWARE, SOFTWARE, BOOKS, ETC.
T/S USER'S GROUP
P.O.BOX 614,
Johnstown, PA 15907
FOR SALE: ON 921003
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
128K COC03; 512K COC03; DISK
DRIVE O; DISK DRIVE 1 & 3 (DS)
4 DISK CONTROLLERS; 2 EPROM
BURNERS; MPI (PAL); SOFT CASE
FOR COCO; MODEM 1; LIGHT
CONTROLLER; LINE PRINTER 120;
DIGISECTOR DS-60/69B; SPEECH
SOUND CARTRIDGE; COLORMAX; ALL
DISK PROGRAMS; ALL TAPE
PROGRAMS; 1 DELUXE JOYSTICK; 4
JOYSTICKS; MOUSE; GRAPHICS
TABLET; VIDEO INTERFACE; KINGS
QUEST II; MODEL III (RS) 48K; 2
DISK DRIVES AND ALL SOFTWARE TO
HERE!!! $400
CALL BARRY AT 708-742-7774
FOR SALE: ON 921012
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
TRS-80 MODEL 16. B W/15 MEG DISK
SYSTEM FOR 8" DISK.
(2) TRS-80 DWP 510 PRINTER
(1) DAISY WHEEL PRINTR MODEL II
(3) TRS-80 8 MEG DSK SYSTEM
(2) TRS-80 12 MEG DISK SYSTEM
(1) TRS-80 15 MEG DISK SYSTEM
(4) DISK SYSTEMS 3 SLOTS, 2 DRV
(4) TRS-80 MDL II MICROCOMPUTRS
EVERYTHING WORKS - PRICE
NEGOTIABLE - CALL PHIL OR JIM
CLARK 8 AM -5 PM WEEK DAYS OR
9 AM TO 12 NOON SATURDAYS
708-366-1913
FOR SALE: ON 920309
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
GETTING RID OF EXCESS
EQUIPMENT, HARDWARE, SOFTWARE,
BOOKS, ETC. FOR BOTH TS1000 AND
TS2068. SEND FOR LIST.
WILLIAM VOLK
6015 CARTER AVE
BALTIMORE MD 21214
H301-254-8258
FOR SALE: ON 911025
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
I have a Sinclair ZX81 with
64 K Memotech RAM, enhanced
keyboard and 300 baud Byte-Back
modem. I also have a TS2068
with modem, printer, and
Spectrum cartridge, along with
a dozen old programs from
Quicksilva and the like, for
both machines. Both are in
working order and excellent
condition. Make an offer on the
whole kit and caboodle.
Peter Paglia
8802 Partridge Run
Chapel Hill NC 27516
FOR SALE: ON 910426
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
COLOR COMPUTER 3 - DISK DRIVE
CM- 8 COLOR MONITOR W/ PLATFORM
SMITH CORONA TP-1 PRINTER
JOYSTICK AND 1 DOZ BLANK DISKS
SOFTWARE INCLUDES DESK MATE
HOME PUBLISHER $400 OR BEST
312-337-3624
FOR SALE: ON 911010
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CoCo 1 W/64K AND PRO KYBRD .$20
J&M Controller $65
Dual TEAC Disk Drives $80
Joysticks $10
The whole package with software
and manuals: $125
TONY SOKOL W9JXN H708-428-4058
FOR SALE: 921010
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ATARI COMPUTER SYSTEM
********** HARDWARE ***********
ATARI 800XL
ATARI 1050 Floppy disk drive
9 inch HP Monitor
Smith Corona TPII Daisy Wheel
ICD parallel Printer & serial
interface (2 serial ports)
Serial cable for modem
Joystick
***** CARTRIDGE SOFTWARE *****
AtariWriter word processor
(with manual)
Assembler Editor programming
language (with manual)
Atari Basic programing language
(with manual)
AtariGraphics for use with
light pen
Space Shuttle flight simulator
(with Manual)
Jumbo Jet Pilot Flight Simltr
(without manual)
Missile Command computer game
(with Manual)
Math Mileage BASIC math skills
game with manual
Atari Lab science software
(With manuals)
BASIC Module
Temperature & Light Module
******** DISK SOFTWARE ********
The Pond (Thinking skills game)
with manual
221 Baker Street
(Sherlock Holmes mystery game)
with manual
Master Type (Typing tutor game)
with manual
Tycoon
(Commodity market simulation)
with manual
Millionaire
(Stock market simulation)
with manual
Movie Maker
(Animation construction)
Music Construction set
Chessmaster 2000
Paperclip word processor
850 express terminal program
Great Blue-C prgrmming language
************ BOOKS ************
Mapping the Atari
Microprocessor Manuals
************ MISC. ************
A few discs with a disk case
*******************************
All above $100 Call Doug Eaton
H/708-668-2731 W/708-576-2116
26
FOR SALE: ON 920909
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
★★★★★★★★★★★★★★★★★★a-************
* Timex and Sinclair Hardware *
★★★★★*★★★*★★★★★★★★★**★*********
(2) TS2068
(2) Joysticks
(1) Spectrum Joystick Adapter
(2) Comodore 1520 Color Plotter
(1) Color Plotter Repl Pen Set
(1) Wico Trackball
(1) TS-2040 Printer
(1) TS2068/1520 Plotter Intfce
(5) TS-2050 Modems (untested, 3
with cables, all uncased)
(1) OS-64 Cartridge
(1) TS2068 Winky Board
(1) Z-SIO ( TS2068 Serial
Intfc)
(1) JLO TS2068 Expansion Board
(1) Z-Link ( TS2068 to Spectrum
bus converter)
(1) JLO Printer Interface Card
(1) QL
(2) Crazybugs Cartridges
(2) Budgeter Cartridges
(1) States & Capitals Cartridge
(1) Pinball Cartridge
(1) Flight Simulator Cartridge
(1) Androids Cartridge
(1) ZX81
(3) TS-1016 (16K Rampack)
(2) TS1000 Winky Board
(1) Larken NVM for TS1000
★*★★★★*★★★★★*★★★★*★★*★★*★*★★★*★
* TS2068 Software *
*****★**★*★★*★★**★*★**★★★★★★*★★
Fighter Pilot
MScript
Flight Simulator
Casboard TS2068
Ramdizk
Textwriter 2000 Plus
Pro/File TS2068 .
Hot-Z TS2068
Mterm-T
Loader V
*★*★****★*★★*★***★★★★*★★★**★***
* Spectrum Software *
★★★★★★★★★★★★★★★★★★★★★★★★a-******
Super Bowl
Machine Code Tutor
Higheay Encounter
The Flying Formula
Dlan
Specterm-64
ZXpert
007 Spy
Softaid (10 Programs)
Cassette 50 (50 Programs)
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★a
* TS1000/ZX81 Software *
Word Sine
ZX -Term* 80
27
★★★★★★★★★★★★★it*****************
* QL Software & Manuals *
★★★★★★★★★★★★★★★★★★★★a-**********
QL Technical Guide
MAC Paint (with files)
CAD
Runtime Editor
Pascal
Psion Package (WP,SS,DB, Graph)
Qcode
QLTerm BEST OFFER
QLink Gary Lessenberry
12 Alleghany Road
Havelock, NC 28532
919-444-3895
FOR SALE: ON 921003
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
YAESU FT101EX TRANSCEIVER .$250
5 BAND VERTICAL $50
CALL BARRY AT 708-742-7775
FOR SALE: ON 930113
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DMP 130 Parallel Printer with
Home Brew 300-9600 baud
Parallel to Serial Interface
and 6 new ribbons $140
10M HD W/DISTO CNTRLR $100
2400 BAUD COMPUDYNE MODEM. . . $40
CALL LEN ZIELINSKI 708-967-8791
9AM TO 9PM
And now, a word from
our Vendors
Please remember to support our
Vendors. Isn't it time to
acquire a disk drive system for
your TS2068? Cost can't be the
excuse because $150 will get
you LarKen DOS and $50 more
will get you dual drives from
fests! Life just isn't long
enough to wait for tape saves
and loads!
Running your computer without a
modem is like having a sports
car with no tires. You just sit
there with all that horse power
and can't go anywhere! Frank
Davis says he has a lot of
TS2050 modems and if he can't
move them he will donate them
away, what a loss to the T/S
community that would be!
Contact him and order yours at:
MECHANICAL AFFINITY
FRANK DAVIS
513 EAST MAIN
PERU IN 46970
317-473-8031
MECHANICAL AFFINITY
PAUL HOLMGREN
5231 WILTON WOOD CT
INDIANAPOLIS IN 46254
Please support our magazine,
it's the only one left and is
really very good.
%%%%%%%%%%%%%%%%%%%%%%%%%%
OUR ONLY MAGAZINE!
PLEASE SUPPORT IT!
%%%%%%%%%%%%%%%%%%%%%%%%%%
UPDATE! COMPUTER SYSTEMS
PO BOX 1095
PERU IN 46970
317-473-8031
AERCO
BOX 18093
AUSTIN TX 78760
512-451-5874
DOS £ CPI'S
LARKEN ELECTRONICS
LARRY KENNY
DOS £ BBS SOFTWARE
These fine products
sold by both
ED GREY £ RMG ENTERPRISES
ED GREY
PO BOX #2186
INGLE WOOD CA 90305
213-759-7406
John Oliger passed this
information to us about his new
JLO SAFE V2.65 which includes a
few new features. I like the
new CAT /n feature.
Prices:
Source Listing w/comments.$7.95
EPROM w/o exchange $15.00
EPROM w/exchange $10.00
JOHN OLIGER CO.
11601 WHIDBEY DR
CUMBERLAND IN 46229
Affordable H/W Expansion
DOS £ CPI'S
ZX REPAIR
DAN ELLIOTT
RT 1 BOX 117
CABOOL MO 65689
SHARP'S INC.
BOX 326
MECHANICSVILLE VA 23111
804-730-9697 FAX>804-746-
MOUNTAINEER SOFTWARE
BILL FERREBEE
749 HILL ST #9
PARKERS BURG WV 26104
304-424-7272
RUSSELL ELECTRONICS
RD1 BOX 539
CENTER BALL PA 16828
RMG ENTERPRISES
ROD GO WEN
1419 1/2 7TH ST
OREGON CITY OR 97045
503-655-7484
SUNSET ELECTRONICS
2254 TARAVAL ST
SAN FRANCISCO CA 94116
Be sure to call or write our
Vendors and ask for information
on their current stock of
products .
Vendors, T/SNUG will run your
ads for free, just send us copy
of your ad the way you want to
see it here. Our members are
paying to see what you have to
offer, we at T/SNUG feel that
this will help you to stay
around longer. Just send your
copy to Don Lambert. We shall
send you this newsletter for
free for as long as you and we
are 'still around 1 .
ZUNK
1419 FERRIS
WAXAHACHIE TX 75165
JOHN MCMICHAEL
1710 PALMER DR
LARAMIE WY 82070
307-742-4530
COLOR PRINTER SOFTWARE
FOR TS2068
Just a reminder,
IT'S RE-UP TIME
AGAIN!
Make your check for $10.00
payable to Abed Kahale and
send it to:
ABED KAHALE
ZXir QUve Alive! Newsletter
335 W NEWPORT RO
HOFFMAN ESTATES IL 60195-3106
HERE IS A REAL BONANZA OF TS AND SPECTRUM USED ITEMS!
BOOKS:
QL SERVICE MANUAL
$
10.00
ZX81 BASIC PROGRAMMING
$
5.00
MASTERING MACHINE CODE ZX81
$
3.00
ZX81 POCKETBOOK
$
3.00
EXPLORER'S GUIDE TO ZX81
$
3.00
QL MACHINE CODE PROGRAMMING ■
$
10.00
CONTROL THINGS WITH YOUR TS
$
6.00
MC68000 PROGRAMMING POCKET GUIDE
$
5.00
MASTERING YOUR TS 1000 PERSONAL COMPUTER
$
3.00
TANTALYZING GAMES FOR TS 2000 SERIES
$
5.00
ADVANCED IN QL MACHINE CODE
$
15.00
THE COMPLETE SPECTRUM ROM DISASSEMBLY
$
20.00
TS2068 OWNER'S MANUAL
$
5.00
TS2068 INT/ADV GUIDE
$
3.00
MC68008 MICROPROCESSOR MANUAL
$
5.00
BEST OF SYNC VOL 1
$
5.00
2068 TECH MANUAL
$
25.00
2-M68000 PROGRAMMER'S MANUAL
$
5.00EA
MTERM TELECOMM BOOK
$
5.00
QL TECH MANUAL
$
20.00
SINCLAIR SURVIVALIST'S HANDBOOK
$
10.00
FOR ABOVE ITEMS PLEASE USE REFERENCE # MCU0 8 92
1> CARDINAL VGA CARD - 256K VROM-LIKE NEW! $ 30.00
2> NEW! PS/2 TYPE 3 -BUTTON MOUSE $ 50.00EA
1> TS 2068 IN WOODEN CASE WITH FULL KEYBOARD/PS $ 75.00PP
HAD SOME DEDICATED KEYS RESET AND NORE/ EXTRA KEYS
1> NEW! IN ORIGINAL CARTON! $ 55.00PP
SUCKERBOARD 1200B EXTERNAL MODEM
FOR ABOVE ITEMS PLEASE USE REFERENCE $ CCU1192
#****#***★*******#****★******************★**★*★*★*★★★*★★★**★★*★
CNSN-8 Last Updated: February 15, 1993
ROD GOWEN, OWNER, RMG ENTERPRISES
1419 - 1/2 7TH STREET, OREGON CITY OR 97045
503/655-7484 6AM - 3PM PT * FAX: 503/655-4116 24 HRS
WE JUST KEEP ADDING MORE PAGES! MORE ITEMS FOR YOU! ! !
HEATH-CHECKING (2068) $ 5.00 EZ KEY- UPLOAD 2000 $ 5.00
INVENTORY (2068)— $ 5.00 LOADER V $ 5.00
NOVELSOFT:
TIMMACHINE — 2068-$10 . 00 SEGA - FROGGER $10.00
WMJ STOCK PLOT $ 5.00
ZEBRA MTERM II $ 5.00
BASIC 2 TEXT $ 5.00
WAR IN THE EAST $ 5.00
MOUNTAINEER CLIPART #1-$ 5.00 DUREL - SABOTEUR $10.00
TASPATCH $ 5.00 TURBO ESPRIT $10.00
MDM PC DRAW $ 7.50
LEMKE TASWORD CONVERTERS 5.00 ZEUS MONITOR/DISASSEMBLER$10.00
PIXEL SKETCH $ 5.00
PIX PR PRO AERCO-$10.00 CASSETTE MAGAZINES: $ 5.00EA
ICON PACKAGE #1—$ 5.00 BYTE POWER MAG 8/86
PIXEL PRINT PLUS-$ 5.00 11/86
TRIVIA 1000 $ 5.00 2/87
2/88
QUICKSILVA-XADOM $ 5.00 5/88
FALL/ 8 8
TIMEX FLIGHT SIMULATOR- $ 5.00
AUTO ANALYSER $ 5.00
VU CALC $ 5.00 BOOKS: $10.00
CHECKBOOK MANAGER$ 5.00 VU CALC/VU FILE MANUAL
FUN GOLF $ 5.00
SPELLING I $ 5.00 SPECTRUM SOFTWARE: $ 7.50EA
PENETRATOR $ 5.00 TASMAN-TASWORD II
PER. PORT. MANA. $ 5.00 ZX COMPUTING-FLYING FORMULAE
w 3D $ 5.00 SHEPHERD
ANDROIDS CART $ 7.50 ZEBRA-ZPRINT 80
CRAZY BUGS CART $ 7.50 SEGA-ZAXXON
TS PD LIB TAPE 2001 $ 5.00
TS PD LIB TAPE 2002 $ 5.00
DIGITAL TOMAHAWK $10.00
NEW GENERATE ON-TRASHMAN$ 5.00 HARDWARE:
PROFILE 2068 $10.00 1 2068 W/SPECRUM ROM— $ 60.00
PROFILE 45 $10.00 1 2068 STANDARD $ 50.00
1 AMDEK DUAL 3" DRIVE SET $ 25.00
FOR ALL ITEMS ON THIS PAGE- 1 5.25" DSDD DRIVE $ 35.00
PLEASE USE REFERENCE * JWU0992
SHIPPING IS INCLUDED UNLESS 1 2040 PRINTER $ 25.00
OTHERWISE NOTED.
CNSN-9 Last Updated: December 14, 1992.
ROD GOWEN, OWNER, RMG ENTERPRISES
1419 - 1/2 7TH STREET, OREGON OR 97045
503/655-7484 6AM - 3PM PT * FAX: 503/655-4116 24 HRS*