Spectrum Technical Data
Width 233 mm
Depth 144 mm
Height 30 mm
with full upper and lower case with capitals lock feature.
All BASlC words obtained by single keys,plus 16 graphics
characters, 22 colour control codes, and 21 userdefinable
graphics characters. All keys have auto repeat.
of 256 pixels x 192 pixels; plus one attributes byte per
character square, defining one of eight foreground colours,
one of eight background colours, normal or extra brightness
and flashing or steady. Screen border colour also settable
to one of eight colours. Will drive a PAL UHF colour TV
set, or black and white set (which will give a scale of
grey), on channel 36.
Point, line, circle and
arc drawing commands in high-resolution graphics. 16 pre-defined
graphics characters plus 21 user-definable graphics characters.
Also functions to yield character at a given position, attribute
at a given position (colours, brightness and flash) and
whether a given pixel is set. Text may be written on the
screen on 24 lines of 32 characters. Text and graphics may
be freely mixed.
Foreground and background
colours, brightness and flashing are set by BASlC INK, PAPER,
BRIGHT and FLASH commands. OVER may also be set,which performs
an exclusive-or operation to overwrite any printing or plotting
that is already on the screen. INVERSE will give inverse
video printing. These six commands may be set globally to
cover all further PRlNT, PLOT, DRAW or CIRCLE commands,or
locally within these commands to cover only the results
of that command. They may also be set locally to cover text
printed by an INPUT statement.
Colour-control codes, which
may be accessed from the keyboard, may be inserted into
text or program listing, and when displayed will override
the globally set colours until another control code is encountered.
Brightness and flashing codes may be inserted into programs
or text, similarly. Colour-control codes in a program listing
have no effect on its execution.
Border colour is set by
a BORDER command. The eight colours available are black,
blue, red, magenta, green, cyan, yellow and white. All eight
colours may be present on the screen at once, with some
areas flashing and others steady, and any area may be highlighted
The screen is divided
into two sections. The top section - normally the first
22 lines - displays the program listing or the results of
program or command execution.
The bottom section
- normally the last 2 lines - shows the command or program
line currently being entered, orthe program line currently
being edited. It also shows the report messages. Full editing
facilities of cursor left, cursor right, insert and delete
(with auto-repeat facility) are available over this line.
The bottom section will expand to accept a current line
of up to 22 lines.
Mathematical operations and functions
Arithmetic operations of
+, -, X, +, and raise to a power. Mathematical functions
of sine, cosine, tangent and their inverses; natural logs
and exponentials, sign function, absolute value function,
and integer function; square root function, random number
generator, and pi.
Numbers are stored as five
bytes of floating point binary - giving a range of +3 X
10^-39 to +7 X 10^38 accurate to 9½ decimal digits.
Binary numbers may be entered
directly with the BIN function.=, >, >=,<> may
be used to compare string or arithmetic values or variables
to yield 0 (false) or 1 (true) . Logical operators AND,
OR and NOT yield boolean results but will accept 0 (false)
and any number(true).
are defined using DEF FN, and called using FN . They may
take up to 26 numeric and 26 string arguments, and may yield
string or numeric results.
There is a full DATA mechanism,
using the commands READ, DATA and RESTORE.
A real-time clock is obtainable.
String operations and functions
Strings can be concatenated
with +. String variables or values may be compared with
=, >, >=, <> to give boolean results. String
functions are VAL, VAL$, STR$ and LEN . CHR$ and CODE convert
numbers to characters and vice versa, using the ASCII code.
A very powerful string
slicing mechanism exists, using the form a$ (x TO y).
Numeric - any string starting
with a letter (upper and lower case are not distinguished
between, and spaces are ignored).
String - A$ to Z$.
FOR-NEXT loops - A-Z.
Numeric arrays - A-Z.
String arrays -A$ to Z$.
Simple variables and arrays
with the same name are allowed and distinguished between.
Arrays may be multi-dimensional,
with subscripts starting at 1.
String arrays, technically
character arrays, may have their last subscript omitted,
yielding a string.
A full expression evaluator
is called during program execution whenever an expression,
constant or variable is encountered. This allows the use
of expressions as arguments to GOTO, GOSUB, etc.
It also operates on commands
allowing the ZX Spectrum to operate as a calculator.
The ZX Spectrum incorporates
an advanced cassette interface. A tone leader is recorded
before the information to overcome the automatic recording
level fluctuations of some tape recorders, and a Schmitt
trigger is used to remove noise on playback.
All saved information is
started with a header containing information as to its type,
title, length and address information. Program, screens,
blocks of memory, string and character arrays may all be
Programs, blocks of memory
and arrays may be verified after saving to confirm successful
Programs and arrays may
be merged from tape to combine them with the existing contents
of memory. Where two line numbers or variable names coincide,
the old one is overwritten.
Programs may be saved with
a line number, where execution will start immediately on
The cassette interface
runs at 1500 baud, through two 3.5 mm jack plugs.
This has the full
data, address and control busses from the Z80A, and is
used to interface to the ZX Printer, the RS232 and NET
interfaces and the ZX Microdrives.
IN and OUT commands
give the I/O port equivalents of PEEK and POKE.
ZX81 BASIC is essentially
a subset of ZX Spectrum BASIC. The differences are as follows.
FAST and SLOW:
the ZX Spectrum operates at the speed of the ZX81 in
FAST mode with the steady display of SLOW mode, and
does not include these commands.
SCROLL: the ZX
Spectrum scrolls automatically, asking the operator
"scroll?" every time a screen is filled.
UNPLOT: the ZX
Spectrum can unplot a pixel using PLOT OVER, and thus
the ZX Spectrum uses the ASCII character set, as opposed
to the ZX81 non-standard set.
ZX81 programs may
be typed into the ZX Spectrum with very little change, but
may of course now be considerably improved. The ZX Spectrum
is fully compatible with the ZX Printer,which can now print
out a full upper and lower case character set, and the high
resolution graphics; using LLIST, LPRINT and COPY. ZX81
software cassettes and the ZX 16K RAM pack will not operate
with the ZX Spectrum.