MACHINE SPECIFICATIONS
hbar

ZX SPECTRUM

Dimensions:

Width 233mm (9.17 in.)
Depth 144mm (5.67 in.)
Height 30mm (1.18 in.)

Microprocessor:

Z80A 3.5 MHz clock.

Memory:

16 Kbytes containing BASIC interpreter and operating system.
RAM: Shipped in two configurations; 16 Kbytes RAM (plus optional 32 Kbytes RAM on internal expansion board) or 48 Kbytes RAM.

Keyboard:

40-key keyboard with upper and lower case with capitals lock feature. All BASIC words obtained by single keys, plus 16 graphics characters, 22 colour control codes and 21 user- definable graphics characters. All keys have auto repeat.

Display:

Memory-mapped display of 256 pixels * 192 pixels; plus one attribute 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 display a scale of grey), on channel 36.

Sound:

Internal loudspeaker can be operated over more than 10 octaves (actually 130 semitones) via basic BEEP command. Jack sockets at the rear of the computer allow connections to external amplifier/speaker.

Graphics:

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.

Colours:

Foreground and background colours, brightness and flashing are set by BASIC 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 PRINT, 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 program 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 extra bright.

Screen:

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, or the 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.

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 string slicing mechanism exists, using the form a$(x to y).

Mathematical Operations and Functions:

Arithmetic operations of +, -, *, / and raise to the 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 generation, and pi. Numbers are stored as five bytes of floating point binary - giving a range of ±3 * 10^-39 to ±7 * 10^38 accurate to 91/2 decimal digits. Binary numbers may be entered directly with the BIN function. =, >, <, >=, <= and <> 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). User-definable functions 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.

Variable Names:

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 to Z.
Numeric arrays - A to Z.
String arrays - A$ to Z$.
Simple variables and arrays with the same name are allowed and distinguished between.

Arrays:

Arrays may be multi-dimensional, with subscripts starting at 1. String arrays, technically character arrays, may have their last subscript omitted, yield a string.

Expression Evaluator:

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.

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 saved separately. Programs, blocks of memory and arrays may be verified after saving. Programs and arrays may be merged from tape to combine them with the existing contents of memory. Where two line numbers or variables names coincide, the old one is overwritten. Programs may be saved with a line number, where execution will start immediately on loading. The cassette interface runs at 1500 baud, through two 3.5 mm jack plugs.

Expansion Port:

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 Compatibility:

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 achieves unplot.

Character Set:

The ZX Spectrum uses the ASCII character set, as opposed to the ZX81 non-standard set.

hbar

ZX81

Dimensions:

Width 167mm (6.57 in.)
Depth 175mm (6.89 in.)
Height 40mm (1.57 in.)
Weight 350g (12.35 oz.)

Microprocessor:

Z80A 3.25 MHz clock

Memory:

ROM: 8 Kbytes containing BASIC interpreter.
RAM: 1 Kbytes internal, externally expandable to 16 Kbytes.

Keyboard:

40 key touch-sensitive membrane. Using function mode and single press key-word system, this gives the equivalent of 91 keys and also graphics mode allows an additional 20 graphical and 54 inverse video characters to be entered directly.

Display:

Requires an ordinary domestic black and white or colour TV. The lead supplied connects directly between the ZX81 and your TV's aerial socket. The display is organised as 24 lines of 32 characters per line showing black characters on a white screen.

Two mode speeds:

The ZX81 can operate in two software-selectable modes - FAST and NORMAL.
FAST is ideal for really high-speed computing.
In NORMAL mode however the ZX81 allows continuously moving, flicker-free animated displays.

Printer:

The 8 Kbytes ROM will permit instructions (LPRINT, LLIST and COPY) to drive the Sinclair ZX Printer.

Programming:

Programs can be entered on the keyboard or loaded from cassette. Programs and data can be saved onto cassette so that they are not lost when the ZX81 is turned off.

Syntax check:

The syntax of a line of program is checked on entry. A syntax error cursor marks the first place the syntax breaks down if there is an error. Once any errors have been edited out the syntax error cursor disappears. Only lines free from syntax errors will be entered into the program.

Graphics:

Apart from the 20 graphics characters, space and its inverse, the display may also be divided into 64 * 44 pixels, each of which may be "blacked" in or "whited" out under program control.

Editing:

The line editor allows you to edit any line of program or input, including program line numbers. Lines may be deleted, increased or decreased in size.

Arithmetic:

Arithmetic operators +, -, *, /, exponentiate. Relational operators <>, <, >, <=, >=, =, may compare string and arithmetic variables to yield 0 (false) or 1 (true). Logical operators AND, OR, NOT yielding boolean result.

Floating-point numbers:

Numbers are stored in 5 bytes in floating-point binary form giving a range of ±3 * 10^-39 to ±7 * 10^38 accurate to 91/2 decimal digits.

Scientific functions:

Natural logs/antilogs; SIN, COS, TAN and their inverses; SQR; e^x.

Variables:

Numeric variable names may be any length, must begin with a letter and consist of alphanumerics. Every character in the name is compared thus an infinity of unique names is available. String variables may be assigned to or from, shortened but not concatenated. String variable names are A$ Z$. Strings do not require a dimension statement and can be any length. Array names consist of a single letter A - Z. Control variable names in FOR ... NEXT loops, which may be nested to any depth, consist of a single letter A - Z.

Arrays:

Arrays may be multi-dimensional with subscripts starting at 1.

Expression evaluator:

The full expression evaluator is called whenever an expression, constant or variable is encountered during program execution. This powerful feature allows use of expressions in place of constants and is especially useful in GOTOs, GOSUBs etc.

Command mode:

The ZX81 will execute statements immediately, enabling it to perform like a calculator if they are not preceded with a line number.

Cassette interface:

Works using domestic cassette recorders. The transfer rate is 250 baud using a unique tape-recording format not compatable with other systems. The ZX81 will also save the data as well as the program to avoid the need to re-enter the data when the program is next loaded. The supplied lead is fitted with 3.5mm jack plugs.

Expansion port:

The expansion port at the rear has full data, address and control buses from the Z80A CPU as well as 0v, +5v, +9v, ± and the memory select lines. These signals enable you to interface the ZX81 to the Sinclair 16 Kbyte RAM pack and the ZX Printer.

Power supply:

The ZX80 requires 420mA at 7 - 11v DC. It has its own internal 5v regulator. The ready assembled ZX81 comes complete with a power supply whilst the ZX81 kit does not.

TV standard:

The ZX81 is designed to work with UHF TVs (channel 36) 625 lines.

hbar

ZX80

Dimensions:

Width 174mm (6.85 in.)
Depth 218mm (8.58 in.)
Height 38mm (1.50 in.)
Weight 300g (10.58 oz.)

Microprocessor:

Z80A 3.25 MHz clock

Memory:

ROM: 4 Kbytes containing basic.
RAM: 1 Kbytes internal, externally expandable to 16 Kbytes.

Display:

Requires an ordinary domestic black and white or colour TV. The lead supplied connects directly between the ZX80 and your TV's aerial socket. The display is 24 lines of 32 characters per line showing black characters on a white screen. The ZX80 has no printer connection.

Programming:

Programs can be entered on the keyboard or loaded from cassette. The ZX80 has automatic "wrap round" so lines of program can be any length. Multi-statement lines are not supported.

Syntax check:

The syntax of the entered line is checked character by character. A syntax error cursor marks the first place the syntax breaks down if there is an error. Once any errors have been edited out the syntax error cursor disappears. Only syntax error-free lines of code are accepted by the ZX80.

Graphics:

A total of 22 graphics symbols giving 48 * 64 pixels resolution consisting of 10 symbols plus space and inverses. All characters can be printed in reverse field.

Editing:

The line editor allows you to edit any line of program or input, including program line numbers. The edit and cursor control keys are EDIT, RUBOUT and HOME.

Arithmetic:

Arithmetic operators +, -, *, /, exponentiate. Relational operators <, >, =, yielding 0 or -1. Logical operators AND, OR, NOT yielding boolean result. Relational operators also apply to strings. ZX80 BASIC uses 16 bit two's complement arithmetic (±32767).

Variables:

Numeric variable names may be any length, must begin with a letter and consist of alphanumerics. Every character in the name is compared thus an infinity of unique names is available. String variables may be assigned to or from, shortened but not concatenated. String variable names are A$ Z$. Strings do not require a dimension statement and can be any length. Arrays have a maximum dimension of 255 (256 elements) each. Array names consist of a single letter A - Z. Control variable names in FOR ... NEXT loops consist of a single letter A - Z.

Expression evaluator:

The full expression evaluator is called whenever a constant or variable is encountered during program execution. This allows you to use expressions in place of constants especially useful in GOTOs, GOSUBs, FOR ... NEXT etc.

Immediate mode:

The ZX80 will function in the "calculator mode" by immediately executing a statement if it is not preceded with a line number.

Cassette interface:

Works with most domestic cassette recorders. The transfer rate is 250 baud using a unique tape-recording format. The ZX80 also SAVEs the variables as well as the program on cassette. Therefore you can save the data for updating next time the program is executed. The ZX80 does not support separate data files. The supplied lead is fitted with 3.5mm jack plugs.

Expansion bus:

The expansion bus at the rear has 8 data, 16 address, 13 control lines from the processor and 0v, 5v, 9-11v, ± and internal memory control line. These signals enable you to interface the ZX80 to your own electronics, PIO, CTC, SIO if you want I/O ports etc.

Power supply:

The ZX80 requires 400mA from 7 - 11v DC. It has its own internal 5v regulator.

TV standard:

The ZX80 is designed to work with UHF TVs (channel 36) and is the version required for use in the United Kingdom. The ZX80 USA is designed to work with a VHF TV (American channel 2, European channel 3) and is the version required for the American TV system, also for countries without UHF.

hbar

Published in:
ZX Computing Volume 1 - Number 8
August/September 1983

hbar
Go To eZine X Page Go To Contents Page