----------------------
                   --------------------------------------
                ============================================
                Sinclair ZX Spectrum 128 Introductory Manual
                ============================================
                   --------------------------------------
                           ----------------------

                 ASCII text version created by Damien Burke

                      Visit my Spectrum web pages at:
          http://users.ox.ac.uk/~uzdm0006/Damien/speccy/index.html

                 Including a HTML version of this manual at: 
     http://users.ox.ac.uk/~uzdm0006/Damien/speccy/128manua/index.html

                            This manual remains
                         Copyright (c) 1986 Amstrad

        Thanks to Cliff Lawson at Amstrad for distribution permission.

- Front cover -------------------------------------------------- Front cover -

                                       sinclair
 
                               ZX Spectrum 128

                                 Introduction

                                         /////

- Page 1 ------------------------------------------------------------ Page 1 -

                         INTRODUCING THE SPECTRUM 128

                  Your Spectrum 128 is two computers in one.

It has all the features which have made the Sinclair Spectrum the most popular
     home computer you can buy, and will run existing software for the ZX
                   Spectrum + and the 16 and 48K Spectrum.

  But now the Spectrum 128 adds a whole new dimension to Spectrum computing.
   Its full 128K of memory means that it can run more complicated programs,
    play more exciting games, store more information - everything you want
        to do will run that much more easily or work that much better.

The Spectrum 128 also has many convenient features in addition to those on the
standard ZX Spectrum +. These include advanced sound, including the ability to
drive a synthesizer; a full screen editor to make it easier to write your own
  programs in BASIC; and a Calculator facility. There are also extra sockets
    for connecting peripherals such as a colour monitor or a printer and a
    special extension keypad giving easy control of the editing facilities.

  A simple command lets you switch off the features which are unique to the
   Spectrum 128 so that it performs exactly like a standard 48K Spectrum +
            (if you want to run a 48K Spectrum game, for instance).

Your Spectrum 128 has two manuals. This introduction describes in detail how
  to set up your Spectrum 128 and how to use its special features. There is
     also a copy of the ZX Spectrum + User Guide, which describes how the
      Spectrum 128 works when running as a Spectrum +, and has detailed
            instructions on how to write your own BASIC programs.

Start by reading the first section of this introduction (pages 2 to 6) which
shows how to set up your Spectrum 128, how to load 128K programs, and how to
                      use the computer as a Spectrum +.

The second part of this introduction covers the special programming features
 of the Spectrum 128, including how to write or edit a BASIC program, how to
      use the Calculator and how to program music. If you want to learn
       programming on the Spectrum 128, we suggest you start by trying 
            some of the examples in the ZX Spectrum + User Guide.

- Page 2 ------------------------------------------------------------ Page 2 -

==========
SETTING UP
==========

When you unpack your Spectrum 128, make sure that you have all the parts shown
on page 4 of the ZX Spectrum + User Guide. (Note that the software supplied is
different from that detailed there). You will also need your own colour TV or
colour monitor, although you can use a black and white TV if you want. You
will also need a cassette player if you want to load any cassette-based
software.

===============================
Connecting up your Spectrum 128
===============================

All connections to the Spectrum 128 must be made firmly - especially the power
supply. If you accidentally switch off the power or disconnect the power lead
while the Spectrum 128 is running, you will lose the program and any
information which is in the computer.

You must be careful how you plug or unplug the connectors for some of the
equipment which can be connected to the Spectrum 128. Like any computer, the
Spectrum 128 can be damaged if some of its leads are carelessly plugged in or
disconnected when the computer is switched on. This applies especially to any
equipment which plugs into the edge connector on the back - such as a
joystick, for example. Never make or break any connection to the edge
connector (or to an extension of it on a 'through' peripheral) without first
turning off the Spectrum 128's power supply by pulling out the plug from the
back of the computer. If you do not, you may damage either the Spectrum 128,
or what you are connecting it to, or both.

Your TV or monitor is a powerful generator of static electricity for a few
seconds after it is switched on or off. if you connect or disconnect it from
the Spectrum 128 during this period, you could end up giving your computer a
fatal static shock - so leave the connections alone for a few seconds after
switching the TV or monitor on or off.

The other connectors on your Spectrum 128 can be connected or disconnected
with the computer power on, but take care with any other mains powered devices
(cassette recorder, printer etc) since they can generate voltage surges at
switch-on which might cause the computer to crash. Switch them on before
connecting them to the Spectrum 128.

=============================
The Spectrum 128 power supply
=============================

The mains connection to your Spectrum 128 is the same as described on page 5
of the ZX Spectrum + User Guide. When you have finished using your Spectrum
128, always switch off the power and pull out the mains plug.

===============
Connecting a TV
===============

If you are using the Spectrum 128 with a colour or black and white TV, you
connect it exactly as described on pages 6 and 7 of the ZX Spectrum + User
Guide.

Unlike the Spectrum + which has an internal loudspeaker, the Spectrum 128's
sound is directed through the TV, so you can control the sound level by
turning the TV's volume control up or down.

The Spectrum 128 has a built-in TV test screen to ensure that you get the
best possible picture and sound. You turn it on by holding down the [BREAK]
key and pressing the reset button or switching on the power. When your TV is
tuned correctly, you will see a multi-coloured pattern and hear an
intermittent tone. If there is an AFC switch, turn this off, then tune the TV
until you see coloured bars and numbers and hear a sound. Make sure that you
do not tune in just the picture - the sound should be present as well. Reset
the AFC, then adjust volume and picture controls as you prefer.

====================
Connecting a monitor
====================

The Spectrum 128 has an output suitable for use with RGB or colour composite
monitors, which give a better quality colour picture than a TV. Sinclair
Research will offer advice on suitable models.

Because most monitors do not have sound, you may need to amplify the Spectrum
128's sound output separately (see page 3 for details).

The monitor lead plugs into the Spectrum 128's RGB socket. There is no need to
tune in the monitor, although some types will need setting to match the
Spectrum 128's signal.

A lead ready to connect to the RGB socket is available from Sinclair Research.
You will need to make your own connections at the monitor end, since there

- Page 3 ------------------------------------------------------------ Page 3 -

is no standard connection. The diagram below gives details of the pin
configuration of the Spectrum 128's RGB output. The monitor dealer should be
able to advise you how to make the connections to the monitor.

        RGB              Pin  Signal              Level
                         -------------------------------------------------
   --7--   --6--         1    Composite PAL       75 Ohms, 1.2 Volts pk-pk
         |               2    0 Volts DC
    3--  8  --1          3    Bright output       TTL
  --     |     --        4    Composite sync      TTL
      /     \            5    Vertical sync       TTL
     5   |   4           6    Green               TTL
    /    2    \          7    Red                 TTL
         |               8    Blue                TTL

==============================
Connecting an extension keypad
==============================

The Spectrum 128 has an optional extra extension keypad which provides extra
facilities when editing programs and works as a games controller and
calculator.

The keypad is connected by its own coiled cable which fits into the socket on
the front of the computer. There is a slight pause after you first switch on
the Spectrum 128 during which the keypad will not respond. Note that the
keypad functions are not available when running 48 BASIC or playing a 48K
game, and so the keypad need not be connected. It can safely be unplugged
while the computer is switched on.

==============================
Connecting a cassette recorder
==============================

A cassette tape recorder can be connected to the Spectrum 128 for loading or
saving programs in a similar way to that described on pages 12 and 13 of the
ZX Spectrum + User Guide.

Note that the MIC and EAR sockets are on the left of the computer rather than
at the back, and that the double lead can be used either to connect the EAR
socket on the Spectrum 128 to the EAR socket on the cassette player (for
loading) or MIC to MIC (for saving) - you should not connect both at the same
time. You can plug or unplug the lead while the computer is switched on.

You can also use a cassette player as an external amplifier, as shown on page
37 of he ZX Spectrum + User Guide.

======================
Connecting Microdrives
======================

Sinclair Microdrives are a powerful means for saving and loading programs more
quickly than using tapes. They are connected to the Spectrum 128 by using a
Sinclair Interface 1, as described on pages 46 and 47 of the ZX Spectrum +
User Guide.

=====================
Connecting a joystick
=====================

A joystick can be connected to the edge connector on the back of the Spectrum
128 by using a suitable interface which should be available with the joystick.
Make sure that the model you buy will work with your software, as there are
several joystick standards. Do not connect or disconnect a joystick interface
while the Spectrum 128 is switched on.

====================
Connecting a printer
====================

The Spectrum 128 can be used with many types of printer which conform to the
RS232 standard (the commonest type) or which are fitted with an RS232
interface. A separate list of suitable models can be obtained from Sinclair
Research.

The printer plugs into the RS232 socket on the left hand side of the Spectrum
128, using a special connecting lead which can be obtained from Sinclair
Research.

Printers such as the Sinclair ZX printer which were designed for earlier
Spectrum models can also be used with the Spectrum 128 but will only work when
the computer is running 48 BASIC, They are not suitable for use when the
Spectrum 128's special features are in use. This type of printer plugs onto
the edge connector at the back of the computer.

==============================
Connecting musical instruments
==============================

The Spectrum 128 can be used to control electronic musical instruments such as
synthesizers and drum machines which conform to the MIDI standard (see page
14).

To make the connection, you need a MIDI lead which is available from Sinclair
Research.

============================
Connecting other peripherals
============================

Your Spectrum 128 can be connected to a wide variety of other computer
peripherals such as light pens, disk drives and modems. Make sure that the
equipment is specifically compatible with the Spectrum 128 as well as other
Spectrum models. Connection details should be provided by the manufacturers
of the equipment.

- Page 4 ------------------------------------------------------------ Page 4 -

===============
GETTING STARTED
===============

When you switch on your Spectrum 128 or press the reset button on the left
hand end, you will see the Spectrum 128 main menu screen which lists these
main functions and allows you to choose between them with a few simple
keypresses
                               Tape Loader
                               128 BASIC
                               Calculator
                               48 BASIC
                               Tape Tester

There is a blue bar (the selection cursor) showing the option which is
currently selected - it starts off on Tape Loader at the top of the menu. Use
the [up arrow] and [down arrow] keys on the main keyboard or keypad to move
the selection cursor up and down. Press [ENTER] (or [CMND] if you have a
keypad) to select the option shown by the cursor.

===========
Tape Loader
===========

This enables you to load any 128K program from tape at high speed. Taped 48K
or 16K programs must be loaded by selecting 48 BASIC. The Tape Loader is
described in detail on page 5.

=========
128 BASIC
=========

Select this option to write your own 128 BASIC program. 128 BASIC is similar
to standard Spectrum BASIC, with the addition of some new commands and
improved editing. Spectrum BASIC is described in the ZX Spectrum + User
Guide, and pages 6 - 8 of this Introduction give full details of the extra
features.

==========
Calculator
==========

This option turns the keyboard or keypad into a simple calculator. The
calculation and results are displayed on the screen. Page 8 of this
Introduction shows you how to use the Calculator.

========
48 BASIC
========

Select this to make your Spectrum 128 work as a Spectrum +, allowing you to
load 48K or 16K Spectrum programs or write your own programs in Spectrum
BASIC.

When you select this option, the screen will clear and you will see the 1982
copyright message as shown on page 6 of the ZX Spectrum + User Guide.

The computer will then behave exactly like an ordinary 48K Spectrum +. You
will not be able to use a keypad or any of the other special program features
of the Spectrum 128 - although you will be able to use a monitor.

If there is a program in your Spectrum 128's memory when you select 48 BASIC,
it will be lost. it is possible to carry over a program from 128 BASIC to 48
BASIC by typing the command SPECTRUM. However, any commands (such as sound
commands) which are only available in 128 BASIC will not be accepted by the
computer.

Your Spectrum 128 will stay in 48 BASIC until you switch off or press the
reset button. There is no command which will let you return to 128 BASIC -
you must press the reset button and start again.

===========
Tape Tester
===========

This will check that you have set the volume on your cassette player to the
best possible level for any given tape. Details are given in the Loading a
program section.

- Page 5 ------------------------------------------------------------ Page 5 -

=================
LOADING A PROGRAM
=================

The Spectrum 128 can be used to run programs which you have bought for it, or
programs which you have written yourself and saved on tape, Microdrive or
disk. It will load all programs which were specially written for the Spectrum
128, as well as many programs which were written for the Spectrum +, Spectrum
48K and 16K. However, you must use a different loading method for these
programs, and it is extremely unlikely that a program will run if you use the
wrong method.

Loading problems can be minimised by running the special Tape Tester program
to ensure that the tape player is set to the ideal volume.

=================
Loading checklist
=================

The different loading methods are explained in detail below. This checklist
shows when to use each one.

* 128K programs on tape
  Most programs will load automatically by using the Tape Loader option. A 
  very few may need special loading instructions entered in 128 BASIC.

* 128K programs on Microdrive or disk
  The loading instructions must be entered from 128 BASIC.

* Spectrum +, 48K or 16K programs on tape, Microdrive, or disk
  The loading instructions must be entered from 48 BASIC.

======================
Loading a 128K program
======================

The Tape Loader option on the main menu can be used for any cassette-based
128K program which accepts a LOAD "" command (almost all commercial programs
do this). It cannot be used for Microdrive- based or disk-based software, nor
the very small number of taped programs which require special loading
instructions.

To use the Tape Loader, ensure that your cassette player is connected
correctly (see page 3), then select the Tape Loader option on the main menu.
If this is the first time you have used the program with your Spectrum 128,
you may wish to use the Tape Tester option first (see below). Otherwise, just
press PLAY on your cassette player and loading is then automatic.

If the program is on Microdrive or disk, or the cassette is one of the very
few which requires a special loading command, you will need to select 128
BASIC from the main menu. Now check the loading instructions given with the
software and type in the command given there (see 128 BASIC for further
details).

===========================
Loading a 48 or 16K program
===========================

Select 48 BASIC then follow the software loading instructions given in the ZX
Spectrum + User Guide.

=================
Loading problems?
=================

Most tape loading problems are not due to a fault with the software or the
computer. If you have problems loading a program from tape, first check that
you have used the right method. Have you tried to load a 128K program in 48K
BASIC, or vice versa?

Then check that your cassette player is set to the optimum volume (see below).
You may also find it useful to check the Software loading troubleshooter chart
on page 16 of the ZX Spectrum + User Guide.

=====================
Using the Tape Tester
=====================

The Tape Tester provides a means of checking that your cassette player is set
to the best volume for any given tape. This will minimise loading problems,
but if your cassette player is faulty or you have a badly recorded tape, it
does not guarantee loading.

Connect up your cassette player and insert the program tape which you wish to
test. Wind it on a little so that you have a signal on the tape. Now select
Tape Tester from the menu. You will see a horizontal blue bar on the screen
with a light blue square to the left of it. Start the tape and you should see
the light blue square move to the right.

Now adjust the volume control up or down until the light blue square fails as
far to the right as possible.

Leave the volume control in this position and rewind the tape. You can now
load it as normal. It is worth marking the volume setting on the tape label
for future reference.

- Page 6 ------------------------------------------------------------ Page 6 -

=========
128 BASIC
=========

Choosing the 128 BASIC option from the main menu lets you write your own
BASIC program. it also lets you edit a program which you have previously
written, or issue a direct command for things like loading software which
cannot be loaded using the easy Tape Loader.

If you are used to writing in Spectrum BASIC (see the ZX Spectrum + User
Guide), you will find that 128 BASIC is very similar but contains some extra
commands. The most important difference is the way in which you type in 128
BASIC.

Ordinary Spectrum BASIC commands are entered in by pressing one key (sometimes
after pressing one or two others). The whole keyword (printed in small letters
on the key) then appears on the screen.

In 128 BASIC none of these special key entries apply. Instead, you type each
word in full, letter by letter.

You can use 128 BASIC to type in any program which was originally written for
the Spectrum 128. it can also be used for many programs which were written for
the 16K or 48K Spectrum, including those in the ZX Spectrum + User Guide. It
does not matter that these originally used special keys to enter them.
However, you may find that some programs for the earlier Spectrums contain
instructions which will cause them to fail if run in 128 BASIC.

Note that the TRUE VIDEO and INVERSE VIDEO keys are not used in 128 BASIC.
INVERSE effects are available by using the keywords INVERSE 1 and INVERSE 0 as
described on page 31 of the ZX Spectrum + User Guide.

In 128 BASIC, EXTEND MODE is only used for a few symbols shown above the
letters on the keys, such as 1. To get these symbols, press the EXTEND MODE
key and then SYMBOL SHIFT and the symbol key together. The Spectrum 128 then
reverts to normal typing. >=, <= and <> must be entered as two characters.
GRAPHICS mode works as it does in Spectrum BASIC but you must leave GRAPHICS
mode if you wish to use the cursor keys to edit a program. Colour control
codes (see page 33 of the ZX Spectrum + User Guide) are not available in 128
BASIC and you should use the colour keywords instead. Spectrum BASIC programs
which contain the keywords POKE or PEEK may not work correctly in 128 BASIC.

When you are typing in 128 BASIC, you can use either capitals or lower case
letters except when entering music (see page 10) The other examples printed
here are in capitals for clarity, but this is not essential. You also do not
always need to include spaces on either side of BASIC keywords as shown in the
program examples (the Spectrum + puts these in automatically). However, if you
are typing a keyword next to another letter (eg, FOR N or IF A) you must put
in the space. When a program line is accepted by the Spectrum 128 (see below)
it automatically converts all the keywords to capitals and inserts spaces as
shown in the examples.

============
Start typing
============

As soon as you have selected 128 BASIC from the main menu, you will see a
blank screen ready to type onto. Try typing this

-----------------------------
10 BORDER 1:PAPER 6:INK 2:CLS
-----------------------------

Note that you could just as well type

-----------------------------
10 border 1:paper 6:ink 2:cls
-----------------------------

as they mean the same to the Spectrum 128. Press [ENTER] when you reach the
end of the line.

Now you want to run your program to see its effect, Type

---
RUN
---

and press [ENTER]. The screen should turn yellow with a dark blue border.

===============
Program errors?
===============

The Spectrum 128 will check each program line after you have typed it in. If
you make a typing mistake which it cannot understand, it will not accept the
line when you press [ENTER]. The commonest errors are spelling mistakes and
missing spaces. For example, in the program line you have just entered, you
might have typed

-----------------------------
10 BORDER 1:PAPER 6:UNK 2:CLS
-----------------------------

which has a spelling mistake.

When an error is detected, a red cursor will flash in the line. This cursor
will almost always indicate the keyword which

- Page 7 ------------------------------------------------------------ Page 7 -

contains the first error (as it will here), but with some types of mistake
this is not the case.

The Spectrum 128 only checks each line as you enter it, so it does not
guarantee that the program as a whole is correct. Nor is it a mind-reader. If
you type

-----------------
10 PRINT "Hellop"
-----------------

the line will be accepted. The computer cannot know that you meant to type
"Hello".

=======================
Correcting your program
=======================

If you make any typing mistakes or just want to change something, the BASIC
editor lets you make corrections very easily using the keyboard. And if you
have a keypad, this has extra keys which give you more control over moving
around and deleting parts of the program.

=============
Moving around
=============

Try moving the cursor around the program using the cursor keys on the
keyboard

[right arrow] moves the cursor one character to the right
[left arrow] moves the cursor one character to the left
[up arrow] moves the cursor up one line
[down arrow] moves the cursor down one line

If you have a keypad, these movements are duplicated by the red cursor keys.
You also have these additional keys

[double right arrow] moves the cursor as far as the begining of the next word
[double left arrow] moves the cursor as far as the next space to the left
[double up arrow] moves the cursor up 10 lines of the program - this will not
                  work unless you have more than 10 lines in your current
                  program
[double down arrow] moves the cursor down 10 lines of the program - this will
                    not work unless you have more than 10 lines in your
                    current program
[bar and double left arrow] moves the cursor to the start of the BASIC line
[double right arrow and bar] moves the cursor to the end of the BASIC line

========================
Deleting program entries
========================

You can erase mistakes by using the [DELETE] key on the keyboard to delete
the character to the left of the cursor.

If you have a keypad, this offers several extra delete keys.

[DEL and left arrow] deletes the character to the left of the cursor
[DEL and right arrow] deletes the character which the cursor is on

You can delete larger amounts by using the following keys on the keypad. To
prevent unwanted erasures you must hold down [SHIFT] at the same time as
pressing these keys.

[DEL and double left arrow] deletes as far as the next space to the left of
                            the cursor
[DEL and double right arrow] deletes from the character under the cursor, as
                             far as the next space to the right
[DEL and bar and double left arrow] deletes from the left of the cursor to the
                                    beginning of the line
[DEL and double right arrow and bar] deletes from the character under the
                                     cursor to the end of the line

======================
The 128 BASIC commands
======================

Press [EDIT] (or [CMND] if you have a keypad) to bring up the Options menu
which offers these commands.
                               128 BASIC
                               Renumber
                               Screen
                               Print
                               Exit

This works like the main menu-you move the cursor up and down with [up arrow]
and [down arrow], and use [ENTER] to select your option.

=========
128 BASIC
=========

Selecting this returns you to the BASIC screen if you have selected the
command Options menu by mistake.

========
Renumber
========

This automatically alters the line numbers of the current BASIC program so
that it starts at line 10 and goes up in steps of 10. It also changes any
references to the line numbers which appear within the lines (such as GOTO
200, for example). This is most useful when you have developed a program by
adding new BASIC lines between the originals. You can use the command to tidy
up the program by spacing it out to absorb the new additions.

======
Screen
======

This option changes the size of the BASIC program screen. Instead of your
program occupying the whole screen area, it can be displayed in just the
bottom two lines. The

- Page 8 ------------------------------------------------------------ Page 8 -

small screen is mainly used when you are saving a screen display or copying
it to a printer - confining the program to an off- screen area ensures that
it does not overwrite the display which you want to keep.

=====
Print
=====

If you have a suitable printer connected, this lets you print out the current
program on paper.

If no printer is connected, or there is some other problem, the computer may
appear to 'freeze'. it can be cleared by pressing [BREAK]. When printing is
complete, you will be returned to the program screen.

====
Exit
====

This option returns you to the main menu. Your current program is
automatically stored and will be recalled if you select 128 BASIC again. If
you switch off, select 48 BASIC or press the reset button the program will be
lost.

====================
USING THE CALCULATOR
====================

The number keys and mathematical symbols on the keyboard or keypad can be used
exactly like an ordinary pocket calculator, by selecting the Calculator option
from the main menu.

When you select the option, you will see the blank Calculator screen. Now just
type in your calculation in standard mathematical notation. For example, type

-----
27*45
-----

When you press [ENTER] the answer = 1215 will appear. As on an ordinary
calculator, the current result is held in the Spectrum's memory - so if you
want to carry out further calculations, there is no need to retype it. For
example, to take 685 from the answer you just got, you type

----
-685
----

and press [ENTER] to see the answer = 530.

The calculator uses all the mathematical functions available in Spectrum
BASIC (see the ZX Spectrum + User Guide). The keypad has the four main
mathematical functions * / + - and also supports the use of brackets.

When you have finished with the calculator, you can return to the main menu by
pressing [EDIT]. This brings up the Options menu:

                               Calculator
                               Exit

Select Calculator to return to the Calculator screen, or Exit to return to the
main menu.

- Page 9 ------------------------------------------------------------ Page 9 -

======================
STORING DATA IN MEMORY
======================

The additional memory in your Spectrum 128 can be used for running large
machine code programs. It can also be used by BASIC to store programs and data
in much the same way as a cassette or Microdrive - but many times faster.

This type of storage is called a RAM disk and it allows BASIC programs to
manipulate data in much the same way as professional programs on big machines.

An important difference between RAM storage and a cassette or Microdrive is
that the data will be lost as soon as the power is switched off or the reset
button is pressed. It will also be as good as lost if you type SPECTRUM.
Always save your work to cassette or Microdrive before doing any of these
things. Data which has been stored in RAM will not be affected by a NEW
command.

All the commands for RAM disk storage are the same as cassette commands except
that an exclamation mark (!) must be typed after the keyword, eg

------------------------
SAVE! "program" LINE 10
LOAD! "program"
SAVE! "picture" SCREEN$
LOAD! "physics" DATA p()
MERGE! "overlay"
------------------------

The VERIFY keyword is not used with the RAM disk.

You can get an alphabetic catalogue of all the files (programs and data) saved
in RAM by typing

----
CAT!
----

Individual files can be removed by typing

-----------------
ERASE! "filename"
-----------------

===============
MUSIC AND SOUND
===============

The Spectrum 128 has two different ways to make music and sound effects. Both
work through the sound channel of your TV or can be sent to an external
amplifier as explained on page 3. There is no internal speaker.

The first method uses the Spectrum BASIC BEEP command (see pages 36-37 and 53
of the ZX Spectrum User Guide). But 128 BASIC also has the PLAY command which
allows you to make sophisticated music with up to three notes at once. It also
gives you more control over the sound of each individual note than is possible
using BEEP.

The PLAY command can be used to let your Spectrum 128 play tunes on many types
of synthesizer and other electronic musical instruments, such as drum
machines. The Spectrum 128 is MIDI (Musical Instrument Digital Interface)
compatible, which allows it to be connected to any other equipment which
conforms to the MIDI standard.

==================
Programming sounds
==================

Making music and sound effects with PLAY is simple. You just type in the
series of notes that make up a tune, then ask the Spectrum 128 to PLAY them.
You can also include instructions that tell the Spectrum 128 what sort of tone
you want for the sound.

To hear some of the wide range of sounds that you can make, type in one of the
two programs below, RUN it, then try the other example, Don't worry if the
program lines look complicated, they are explained in detail later

=====
MUSIC
=====

--------------------------------------------------
10 LET a$="T180O6(CDEC)(5EF7G)(3GAGF5EC)5Cg7C9CgC"
20 LET b$="O4(CDEC)(5EF7G)(3GAGF5EC)5Eb7E9EbE"
30 LET c$="O3(7CG)(7CG)(7CG)5GD7G9GDG"
40 PLAY a$,b$,c$
--------------------------------------------------

- Page 10 ---------------------------------------------------------- Page 10 -

=============
SOUND EFFECTS
=============

-----------------------------------------------------
10 LET a$="M8UX350W507(((C)))": PLAY a$ : PAUSE 25
20 LET a$="M56UX5000W1O3(((C)))" : PLAY a$ : PAUSE 25
30 LET a$="M56W2O1N8C" : PLAY a$ : PAUSE 25
-----------------------------------------------------

======================
Using the PLAY command
======================

In the examples above, you will see that each time the PLAY command appears,
it is followed by up to three different letters, each followed by a $ sign in
a statement like

-------------
PLAY a$,b$,c$
-------------

Each of these is the name of a string (a series of characters) which you have
already given to the computer earlier in the program. The strings tell the
Spectrum 128 which sounds to make.

PLAY controls three separate sound channels called A, B, and C and there can
be up to three strings, one for each channel. In the MUSIC example given
above, a$ tells channel A to play the melody line, b$ tells channel B to play
a harmony, and c$ tells channel C to play a bass part. In the SOUND EFFECTS
example, only one noise is used at a time (although up to three can be), so
each one is in channel A and the command is simply PLAY a$.

In fact any of the channels can produce either a musical tone or noise, so you
can mix sound effects in with your music (see Channel selection).

====================
Constructing strings
====================

Composing music and sound effects on the Spectrum 128 is simply a matter of
creating strings containing the information you want. You can see how this
works in the MUSIC example above. Each string is created with the LET command,
followed by the name of the string, and its contents enclosed in "" marks. Try
this example, which plays just one note - an A.

-------------------
LET a$="a": PLAY a$
-------------------

Any music program using PLAY also uses LET to tell it what to play, as you can
see by looking at the earlier examples. The reason why these programs look
more complicated than the example above is that the strings enclosed in the ""
marks contain many letters and numbers to define a longer tune or more complex
sound.

Any musical sound has a pitch and duration. It also has a volume and tone
quality. The strings in the earlier examples contain information about all of
these. The summary below lists each possible command, and they are explained
in detail opposite.

====================
PLAY command summary
====================

This is a brief list of the commands which can be contained in a PLAY string.
Note that all letters except note names must always be in capitals.

String entry Function
------------------------------------------------------------------------------
c-b or C-B   Gives pitch of note within current octave range
$            Flattens note following it
#            Sharpens note following it
O            Followed by number 0 to 8 sets current octave range
1-12         Sets length of notes
&            Denotes a rest
N            Separates two numbers
V            Followed by a number 0 to 15 sets volume of notes
W            Followed by a number 0 to 7 sets volume effect
U            Turns on volume effect in any string
X            Followed by a number 0 to 65535 sets duration of volume effect
T            Followed by a number from 60 to 240 sets tempo of music
( )          Enclose repeated phrase
! !          Enclose a comment
H            Stops a PLAY command
M            Followed by a number from 1 to 63 selects channels
Y            Followed by a number from 1 to 16 turns on a MIDI channel
Z            Followed by a number sends that number as a MIDI programming code 

- Page 11 ---------------------------------------------------------- Page 11 -

=================
Setting the pitch
=================

As you saw above, you set the pitch of any note by giving its musical name -
eg, C E G. Sharp notes are prefixed by # (eg #C) and flat notes by $. Your
'instrument' covers two octaves in the key of C, and uses letters c to b for
the notes in the lower octave, C to B in capitals for the higher one.

Any number of notes within these two octaves can be played one after another,
eg

----------------------------
10 LET a$="cfedafgCFEDAFGCC"
20 PLAY a$
----------------------------

If you want to span more than just two octaves, you can change the overall
pitch of your 'instrument' by using the octave command 0 followed by a number
from 0 to 8. if you do not specify an octave (as in the example above) it is
automatically set to 5 (the range containing middle C). The octave command
remains in force for all notes which follow it until a new octave command is
given.

This program lets you hear the same tune played in a higher octave (just add
the O7 to your earlier program)

------------------------------
10 LET a$="O7cfedafgCFEDAFGCC"
20 PLAY a$
------------------------------

Try changing the octave number progressively to hear the full pitch range
which your Spectrum 128 can produce. Notice that some of the very lowest notes
in octaves 0 and 1 will not be reproduced at the right pitch except through
the MIDI output. The Spectrum 128 will simply play them at the lowest pitch
possible.

Since each pitch range covers two octaves, two adjacent ranges overlap. For
example, the high part of 04 contains the low part of 05 (see the diagram
below). Note that you can extend any range slightly by using a series of
sharps (####) or flats ($$$$) to raise the pitch of individual high notes or
lower the pitch of low ones.

=============
Note duration
=============

If you do not specify the length of each note, they will all be played at the
same length (as crotchets) as in the examples above. You can fix the length of
any note or series of notes by prefixing it with a number from 1 to 12. This
program lets you hear the different note duration with numbers from 1 to 9.

------------------------------
10 LET a$="1C2C3C4C5C6C7C8C9C"
20 PLAY a$
------------------------------

Pitch values for making music with PLAY

This diagram shows how you can create different notes using the Spectrum 128's
octave command. The command O followed by a number from 0 to 7 sets the
Spectrum 128 to a range of two octaves beginning with a C. The diagram shows
the complete range of notes covered by O4. O5, and O6. Adjacent octave ranges
overlap, so the same notes appear in the upper part of one range and the
lower part of another.Individual notes within an octave range are set by
using the letters c to b in lower case for the lower notes and C to B in
capitals to give the notes in the upper octave. Placing a # before any note
letter gives a sharp note - a $ flattens it.

[There was a diagram here, but it's a bit beyond ASCII art, so take a look at
the HTML version's sp128111.gif file -DB]

- Page 12 ---------------------------------------------------------- Page 12 -

1 is the shortest note and 9 the longest. They are related to musical
convention according to the following table.

                  Number  Note Name          Musical symbol
                  -----------------------------------------
                  1       semi quaver
                  2       dotted semi-quaver
                  3       quaver
                  4       dotted quaver
                  5       crotchet
                  6       dotted crotchet
                  7       minim
                  8       dotted minim
                  9       semi-breve

[The musical symbols are also beyond ASCII art so take a look at the HTML
version's sp128121.gif through to sp12812c.gif files -DB]

Each of these controls the length of all notes which follow it until you give
a new number code.

You can also use the numbers from 10 to 12 to specify triplet notes (three
notes played in the time normally used for two).

                  10      triplet semi-quaver
                  11      triplet quaver
                  12      triplet crotchet

Each of these only applies to the three notes following it and must be
followed by their three names, eg

-----------------
10 LET a$="11ACE"
-----------------

A rest (no note playing) is specified by a & and has the same length as the
current note. For example

----------------------
10 LET a$="7A&B&C&D&E"
----------------------

is five minims with equal pauses between them.

Tied notes can be indicated by giving the two note durations connected by an
underscore character and the note name, eg

----------------
10 LET a$="3_5A"
----------------

The second note duration you give will also apply to any following codes until
you give another duration code.

=============
The N Command
=============

In some or the examples you will see the letter N used to introduce a series
of notes within the string, eg

----------------
LET a$="O7N1CDE"
----------------

N is used in cases where two sets of numbers would otherwise clash. In the
example above, 0 is set to octave 7, then a series of notes is given, starting
with the duration code 1. Without the N code, the Spectrum 128 would read the
octave code as 71 - obviously not what was intended!

===========
Note volume
===========

The overall volume of the sound is controlled by the volume setting of your
TV or amplifier. You can control the volume of individual notes and phrases
within the tune by using the V command. V followed by a number from 0 to 15
sets the following note(s) to a constant volume. The lower the number, the
quieter the sound, with V0 completely silent (V0 is a useful way of stopping
one channel playing while others continue). V15 is the maximum and is used
automatically by the Spectrum 128 if you do not specify a level.

The low volumes are very quiet and you will normally use 10 to 15 unless you
are outputting to an amplification system or via the MIDI port to a
synthesizer. Try running this program

-----------------------------
10 LET a$="V10cdefgabCDEFGAB"
20 PLAY a$
-----------------------------

Now try changing the number after the V to a new value to hear the difference

==============
Volume effects
==============

Instead of you just setting each note to a fixed volume, PLAY also lets you
change the volume of the sound while it is playing. For example, you can make
a note start suddenly and then die away (like a piano) or make a sound effect
rise and fall in volume (like a steam train).

This effect is controlled by the letter W which can be included in any of the
strings controlled by the PLAY command. You must also include the letter U in
each string where you want to use the effect. You cannot use it if the string
already has a volume setting (if it contains a V) - the volume command will
overrule the effect.

- Page 13 ---------------------------------------------------------- Page 13 -

The W must be followed by a number from 0 to 7 which controls how the sound
builds up (the attack) or fails off (the decay). This is the full range of
numbers and what they do

                0  \____________   0 single decay then off

                1  /|___________   1 single attack then off

                2  \|-----------   2 single decay then hold

                3  /------------   3 single attack then hold

                4  \|\|\|\|\|\|\|  4 repeated decay

                5  /|/|/|/|/|/|/|  5 repeated attack

                6  /\/\/\/\/\/\/\  6 repeated attack-decay

                7  \/\/\/\/\/\/\/  7 repeated decay-attack 

This program plays the same note with each effect in turn to let you hear
what they sound like

-------------------------------------------------
10 LET a$="UX1000W0C&W1C&W2C&W3C&W4C&W5C&W6C&W7C"
20 PLAY a$
-------------------------------------------------

Notice the U to turn on the effect, then the series of W numbers.

There is one other new command used here, the letter X. This can be followed
by a number from 0 to 65535 to set the length of the sound effect - the larger
the number, the longer the effect is drawn out.

You do not have to include an X setting. If you do not, the Spectrum 128 will
automatically choose the longest. In general, repetitive effects (W4 to 7) are
more effective with quite short settings, eg X300.'Single shot' effects (W0 to
W3) need a longer period, eg X1000. Try changing the value after X in the
program above to hear the difference.

=====
Tempo
=====

The speed at which a piece of music is played can be set with the command T
followed by the number of crotchet beats per minute (bpm) in the range 60 to
240. The command controls the speed at which all notes are played, but can
only be included in channel A (the first string after the PLAY command)
otherwise it is ignored, eg

---------------------
10 LET a$="T180cdefg"
20 PLAY a$
---------------------

If no tempo is specified, the music will be played at 120 bpm.

================
Repeated phrases
================

Any musical phrase can be repeated by enclosing the appropriate string or part
of a string in brackets. For example

---------------------
10 LET a$="abC(DEFG)"
---------------------

will repeat the last four notes. If there is an unequal number of brackets,
the phrase will be repeated back to the last bracket. If there is only a
closing bracket, the phrase will be repeated back to the beginning of the
string, eg

--------------------
10 LET a$="abCDEFG)"
--------------------

will repeat all seven notes. Double closing brackets

--------------------
10 LET a$="O2CEGA))"
--------------------

will cause an 'infinite' repeat. This is particularly useful for things like
repetitive bass lines. To turn off an 'infinite' repeat you use the H command.

=============
The H command
=============

An H included in any string immediately turns off the PLAY command. The main
use of this is where you have an infinitely repeated bass line in one string.
You can stop this at the end of the tune by putting an H on the end of the
string which plays the melody.

- Page 14 ---------------------------------------------------------- Page 14 -

========
Comments
========

You can include reminders and comments anywhere you like by using !! marks.
Anything written after a ! will be ignored until the next ! or the " at the
end of the string is reached, eg

---------------------------------
10 LET a$="abCDEFG!chorus!aCEaDG"
---------------------------------

=================
Channel selection
=================

The command M is used to select which of the three channels are in operation
and whether these give noise or musical tones.

You can have a maximum of three channels in use at any one time, but it does
not matter whether they are all tone, all noise, or a mixture of both.

Your choice is entered with a number following the M, worked out like this

                            Tone channels  Noise channels
                              A   B   C      A   B   C     
                    Number    1   2   4      8  16  32 

Mark each channel you want to turn on, and note down its number. Then just
add them together to get the code you should use after the M. For example, if
you want to use tone channels A, B, and C, you add the numbers 1 + 2 + 4 = 7,
so you use the command M7. In the same way, M56 would turn on noise channels
A, B, and C.

Noise can be used on any channel but the most wide-ranging frequencies are
available in channel A. For the best results put your sound effects in the
string which controls this channel - a$, the first string after the PLAY
command.

===============================
Controlling musical instruments
===============================

Whenever PLAY is running, a signal can be sent to the MIDI port in the RS232
socket at the front of the computer. This output will drive any MIDI-
compatible musical instrument such as many makes of synthesizer and drum
machine, so that the instrument will play the music which has been programmed
into the Spectrum 128.

Using the MIDI output lets you play more complicated music with up to eight
notes at a time instead of three. All you do is to follow the PLAY command
with the names of up to eight strings, (a$ to h$, for example) each of which
is constructed as described above.

Do not try to send music to the MIDI port unless you have already connected
the instrument (see page 3). To send the output to the MIDI port, each string
should include the letter Y followed by a channel number from 1 to 16. If you
use the same number in each string, up to eight notes can be played by one
instrument at the same time. If you use different numbers, you can control up
to eight different instruments at the same time.

Most MIDI instruments power up in OMNI mode so that they play the notes on
channel 1 as well as the channel to which they are directed. To get the notes
on the correct channels, the MIDI instrument must be put into POLY mode. You
can do this by directly altering the instrument's MIDI channel, or by
including the appropriate MIDI programming code in the string. The programming
codes for your instrument should be listed in its handbook and can be sent to
it from the Spectrum 128 by including the letter Z in the string, followed by
the MIDI code number.

If your synthesizer understands key velocity (so that the program you send it
controls the volume at which it plays) this is interpreted from the V settings
in the strings. It is calculated at eight times the volume set by the V
command, so it takes the values 0, 8, 16 ... 120. The key release velocity
when a note is switched off is sent as 64. If the synthesizer is not designed
to understand key velocity, it will play the same volume regardless.

- Back cover ---------------------------------------------------- Back cover -

First published 1986 by Sinclair Research Ltd, Milton Hall, Milton, Cambridge
CB4 4AE

Copyright (c) 1986 Sinclair Research Ltd

ISBN 1 85016 056 2

sinclair, ZX Spectrum +, ZX Spectrum 128, ZX Microdrive, and ZX Interface are
Trade Marks of Sinclair Research Ltd.

All rights reserved. No part of this publication may be reproduced in any
form. Unauthorized copying, hiring, lending or sale and repurchase prohibited.

[ASCII text version created by Damien Burke. You can ignore the stuff above, I
just kept it in for completeness; Amstrad do not mind distribution of old
Sinclair stuff. Lovely people! However, Amstrad retains the copyright to this
document. -DB]