BIORHYTHMS (16K ZX81)
CURRENCY CONVERTER (aka. Bureau de Change (16K ZX81))
CUSTOMER FILE (16K ZX81)
ETCHASKETCH (1K ZX-81)
LARGE CHARACTERS (16K ZX81)
SOLVING EQUATIONS (1K ZX81)
ZX DRAWING BOARD (1K ZX80, 1K ZX81)


BIORHYTHMS (16K ZX81)
from ZX Computing 1, Summer 1982, page 116

The 'science' of bio-rhythms is based on the belief that each of us is in the
throes of three cycles which start at the moment of birth and continue until
death.

PHYSICAL: The 23-day physical cycle relates to endurance, aggressiveness and
physical strength.

EMOTIONAL: The 28-day emotional cycle governs emotions, optimism/pessimism,
frustration, temper and moodiness.

MENTAL: The 33-day mental rhythm is related to logic, reasoning, ease of
expression and common sense.

This program takes your date of birth, then the date of the day which interests
you, and works out the 'worst point' on each of the three cycles in relation to
the day you have nominated.

[The program only supports years between 1900 and 1999.]




CURRENCY CONVERTER (aka. Bureau de Change (16K ZX81))
by Bob Perrigo
from ZX Computing 1 (Summer 1982), page 23

If you're always jetting off to exotic parts of the world, like Paris, Geneva
or Blackpool, you'll be in need of this program which rapidly converts your
money from one currency to another.

The program, as written by Bob Perrigo, caters for six different currencies,
but it can easily be modified to handle as many currencies as you need. The
values of major currencies and their exchange rates with the pound are
published in many newspapers, particularly the Financial Times. Current values
have to be entered when you first RUN the program. Once the values are in RAM,
you can use the program again by entering GOTO 6 instead of RUN. The word END
after the semi-colon in line 100 is not a mistake. It acts just as END does in
other BASICs, stopping the program. It does so in this case because the ZX81
considers the word END to be an unassigned variable, and will stop the program
with the error code 2/100. Any other letter, or combination of letters, which
is not used elsewhere in the program, will stop it as effectively as does END.



CUSTOMER FILE (16K ZX81)
by I Wrigley
from ZX Computing 1 (Summer 1982), pages 86-87

I Wrigley of Ravenshead draws on his experience to produce a very useful
program, intended for the small business with around 100 customers.

The program, written for a 16K ZX81, would be fairly easy to convert to run on
other systems. It is meant for small businesses with up to 100 customers. It
will print out their names and address, tell you who hasn't paid their bills,
and other things you'll discover.

It's pretty easy to use the program, because all the prompts are
self-explanatory. There's one point to watch, and this concerns the entering of
a customer's name and address. The format for this is: "Customer's name* 1st
line of the address* 2nd line of the address*... and so on... last line of the
address NEWLINE". Entering * (shift B) after each line of the name and address
ensures that it is correctly formatted when dumping on the printer.

Lines 100 to 220 are only ever used once, to input all the customers' names and
addresses.

Lines 230 to 400 are the menu selection lines. For other BASICS, line 390 will
have be changed to ON B GOSUB 1000, 2000... 9000.

Line 380 is present because the manual state that a program cannot be SAVE'd
from within a GOSUB loop.

Lines 1000 to 1040 list all the customers.

2000 to 2130 amend the name or address of a customer.

3000 to 3040 alter the amount a customer owes.

4000 to 4090 enter a new customer.

5000 to 5050 delete an old customer.

6000 to 6040 list all customers owing money.

7000 to 7040 print an address label.

8000 to 8040 save the program and its variables on tape. Some BASICs may not
allow this. Saving the program from the program means that when it is LOADed,
it will jump straight to the menu.

9000 to 9040 checks that the program has been SAVE'd on tape, and if it has,
the machine is NEWed, clearing its memory for other uses.

9100 to 9220 is a bubble sort, to place the names in alphabetical order. It can
be replaced by any other sort if required. However, if you do this, don't
forget to change the amount owing (held in array A), along with the names.

9500 to 9670 asks the user for a customer's name or his customer number (the
customer number may change during any run of the program) and returns the
customer number in variable G. If the name is not found, the flag F is set to
1, and the subroutine prints a message.

9700 to 9840 prints out one customer's name on the printer. If your computer
supports file handling but does not save the variables on tape when the rest of
the program is SAVE'd, then the variables which must be stored on tape are:
A$(1} to A$(100), the array which holds the customers' names and addresses,
A(1) to A(100), which holds all the amounts owing, and C, which stores the
number of customers.

None of the variables to be stored.


USING THE PROGRAM

Using the program is quite easy since all the prompts within the program are
self-explanatory. There is only one point to watch, and this concerns the
entering of a customer's name and address.

The format for this is: "Customer's name * 1st line of the address * 2nd line
of the address*... last line of the address newline".

Entering the * (SHIFT-B) after each line of the name and address ensures that
the name and address is correctly formatted when it is output to the printer.




ETCHASKETCH (1K ZX-81)
from ZX Computing 1, Summer 1982, page 91

This very short program allows you to use the keys "5", "6", "7" and "8" to
move the PLOT blob around the screen, drawing pictures of your choice. Once
you've got it running, try and modify it to (a) give you a choice of starting
position; and/or (b) 'turn off' the blob from time to time to move it to a new
position on the screen without leaving a trail.




LARGE CHARACTERS (16K ZX81)
by David Kelsall
from ZX Computing 1, Summer 1982, page 107

David Kelsall of St. Albans has provided programs to print wide and double
height characters on the ZX printer. The programs can be combined to produce 16
large letters per line.

[RAMTOP must be lowered before either program can be used. Achieve this by
typing:

   POKE 16389,124
   NEW

then load the required program.]




SOLVING EQUATIONS (1K ZX81)
by Jeremy Ruston
from ZX Computing 1 (Summer 1982), page 69

This clever routine, written by Jeremy Ruston, uses Newton's method for solving
equations. Enter the equation you want solved for X when prompted by line 10,
then - in reply to the prompt from line 40 - enter a starting position for the
ZX81 to work from. This should be either an answer somewhere near what you
believe the correct answer to be, or - if there is more than one correct answer
- a number near the answer you are seeking. Then press NEWLINE and sit back and
watch the fun as the computer verges towards the answer.

To try it out, enter X*X-5 (to find the square root of five) or X**3-27.6 to
find the cube root of 27.6.

[As listed, line 100 fail to clear any trailing digits previously printed.]




ZX DRAWING BOARD (1K ZX80, 1K ZX81)
from ZX Computing 1, Summer 1982, page 90

ZX80 PROGRAM:
- Program 1 [original program name unknown]

This simple little program, quite apart from enabling one to draw pretty
pictures on the screen of one's ZX80, shows how you can control on-screen
movement. You can change the symbol in use and the direction in which you are
moving at any time during the program execution.

When the program is RUN an asterisk (star) it displayed on the screen. To alter
the symbol in use press '5' then 'NEWLINE' followed by the code of the required
symbol and 'NEWLINE'. Changes in the direction of movement can be made by
keying the desired direction code (shown below) and the inevitable 'NEWLINE'.

  7  8  9
   \ | /
  4--+--6
   / | \
  1  2  3

The program uses the following variables:
D - Position on-screen of current symbol.
C - Code of displayed symbol.
A - Direction code.
I - Dummy variable.


Try the following data string, the '/' represents the NEWLINE.

5/128/8/4/2/2/4/4/2/2/2/2/6/6/2/6/8/6/6/6/6/6/
6/2/6/8/6/6/8/4/8/8/8/8/8/6/8/4/4/4/2/2/2/4/4/
4/4/4/4/8/8/8/5/8/9/9/9/9


ZX81 PROGRAM:
- Sketchpad
- Program 2 [original program name unknown]
