Reviewer: Tim Hartnell
Magazine: Your Computer
Date: June 1981
My conclusions are clear - the ZX-81 is both a delight and a disappointment. Despite what I or any other reviewer says, Sinclair will sell 100,000 of them before Christmas.
Let us look at the disappointing side first. Late in December last year, 10 or so prototype new-ROM ZX-80s - old ROM-ZX8Os with EPROMs - were loaned, on strict pledges of secrecy, to develop software for Sinclair to sell, I had one of the new-ROM machines, and was in regular contact with two others who also had them. Within days, it was obvious to me that something was very, very wrong.
The amount of the original on-board 1K left for program use after filling the screen with blanks for the Print At function - POKEing into the display file via the ROM - was so small that use of the 16K pack was mandatory for any worthwhile use. The 3K memory expansion board Sinclair sold for the ZX-80 will not work on the ZX-81 - unless you manage to cut connection 23B.
With the 16K pack fitted, the prototype new-ROM ZX-80s - and two of the three ZX-81s we have used - displayed an alarming lack of stability. At any time, the program would just vanish. Several times I was not even near the computer when it happened. Without warning, the program just vanished, leaving a blank screen. The ZX-81 then had to be unplugged from the power before it could be used again.
We rang Sinclair Research and pointed out that without data stability, there was no way the computer could ever be considered for serious use. I was asked to return the ZX-80 so they could check it. After a week, I had it back in exactly the same state and subsequent telephone calls assured me I was making much ado about nothing.
When I told Sinclair Research the nature of the review I would be writing for Your Computer, a man was sent with a new ZX-81 and 16K pack. While he was there, my ZX-81 refused to crash.
The ZX-81 you buy could perhaps be as unstable as the first two I tested. I could not test the third - it was constructed so you could not even plug the 16K pack in the back. The 16K pack seems to be at the heart of the instability problem. There seem to have been many problems with them - mostly of the “vanishing program” variety. The other strange behaviour they display is “the incredible shrinking RAM” when the available memory decreases to around 11K after a few hours’ use.
I have mentioned that, despite whatever was written about the ZX-81, Sinclair Research would sell 100,000 before Christmas, Let me explain why I think so.
It is undoubtedly a machine, albeit with display limitations, which will teach, in a very pleasant way, programming in a useful subset of Basic, which includes flexible string handling, a wide range of mathematical functions, and the use of additional commands like PEEK and POKE.
As well, there are the Sinclair-only delights of INKEY, Print At and Print To to master. There is no better way of getting to grips with computers and programming than to have one to play with - and the ZX-81 is the least costly way to gain hands-on experience.
The ZX-81 looks and feels good. It is about the size - 7in. by 7in. - and weight of a paper-back book, finished in matt black, with a matt-plastic keyboard finished in red and black. The power-supply, television and cassette in and out plug into the left-hand side.
Connection is simple, but you must be certain the plugs are inserted tightly, or the slightest movement of the computer will dislodge them.
There are many similarities to the ZX-80. Line numbers are from 1 to 9999; the first word after a line number or after the word Then - such as Let, Print, Goto or Gosub - is entered with a single key-stroke, and each line is checked for syntax errors before being accepted into the main body of the program. The touch-sensitive keyboard is simple to use.
The only feedback you have is when the characters appear on the screen. You will obtain numbers, key words - the word above the keys - if it is the first keystroke after a line number or letters by using the keyboard in the non-shift position.
Holding down shift - and you must be careful to press Shift exactly - gives you access to the commands written within the keys, such as Stop, LPrint and To. Holding down Shift and pressing Newline - the ZX equivalent of Return - while doing so will give you the functions written below each key. To obtain the graphics, you need to hold down Shift then press the Graphics key which is on the same little square as 9.
From then on, until you press Shift and Graphics together again, you will obtain the inverse of letters, numbers, the dollar sign and the like. You must depress Shift again, while in the Graphics mode, to obtain graphical characters like the grey square on the letter A keypad. This sounds a great deal more complicated then it is in practice, even though many keys can produce five different effects.
Despite the advertisements, the graphics are not high resolution. True, in the Plot mode, you use a grid of 64 by 42 as opposed to 32 by 21, but this is far from true high resolution, Here is a program to show the PLOT function.
10 FOR A = 2 TO 120 20 LET B = A*PI/30 30 PLOT A/2, SIN(B)*20 + 20 40 NEXT A
This routine plots a sine curve.
One of the most frequent sources of complaints on the ZX-80 was the flash which occurred every time a key was pressed, and the fact that the screen went blank when the computer was “thinking”.
Sinclair minimised the cost of the ZX-80, in pan, by using the same bit of computer to both think and handle the display - but it could not do both at once, so the display went blank during processing. A very important function on the ZX-81 - but which is not provided on the new ROM as it requires hardware to operate - is the Slow/Fast option.
Fast, which you trigger either by entering Fast, shift F, in the direct mode, then Newline before running, or by including a line like 10 Fast in the listing, makes the ZX-81 perform like a ZX-80. Processing takes priority over display, so what you see during thinking time is a grey, fuzzy screen.
The Slow mode, in which ZX-81 is automatic unless you input Fast, puts maintenance of the picture at a higher priority than processing. Although the ZX-81 runs about four times slower in Slow than it does in Fast, this is unlikely to bother a user in the vast majority of cases.
The important thing is that the display is rock steady, without a hint of flicker, so animated displays of a kind can be produced. The display looks as if it is memory-mapped. The addition of Slow is, in my opinion, the most important development Sinclair has produced with the ZX-81.
Sinclair ZX-81 Basic allows only single statement lines, but judicious chaining with And, If and Then - lines may be up to 255 characters long - can simulate multiple statements, to some extent. The syntax-checking is superb. The computer refuses to accept an incorrect line which is better than computers which accept the line, then hang up when you try to Run it. It then puts an error marker next to the offending number or letter.
The Basic allows you to jump out of loops at will, with Goto or Gosub any syntactically-correct statement. So you can say
IF X = iNT(2*PI/(T - B)) THEN GOSUB Y**T
or
IF J = 9 THEN PRINT AT B, SQR(B)
The Basic compensates for non-existent Goto and Gosub destinations by going to the next highest line - a useful feature for programmers who chop and change lines a good deal when working.
Although ZX-81 Basic has its own oddities, as do all Basics, it is a sufficiently standard version of Microsoft to enable a ZX-81 owner to adapt easily to Microsoft-using computers. There is no Read/Data function, but you can compensate in part for this lack by PEEKing and POKEing REM statements. The first address after the word REM in the first line of a ZX-81 program is 16514 - a fact you will not learn from the otherwise comprehensive manual.
String handling on the ZX-81 is a great improvement on the limited string functions available on the ZX-80. The very useful, if non-standard, ZX-80 function TLS, truncate left, which progressively stripped a string of its contents character by character, has been dropped by the ZX-81
However, the ZX-81 offers string arrays. You dimension them as you do numeric arrays, by the statement DIM A$(9). Numeric arrays are dimensioned by using the letters A to Z in the form DIM A(9). Subscripts for string, character and numeric arrays start at 1.
DIM A$(9) will allow you to manipulate a single word of nine letters. If, for example, you set up the array DIM A$(9) and placed in the next line
LET A$ = "123456789"
and the following line was PRINT A$(7)
, the ZX-81 would output “7”. If you entered
PRINT A$(2 + 4)
you would obtain “6”.
PRINT A$(2 TO 5)
produces “2345”,
LEN A$
gives “9” and
VAL A$
gives 1234567890.
The STR$ function - and note that all these functions are single-key entries - changes a number, e.g., 9, into a string, so
LET A$ = STR$(9)
sets A$ equal to “9”. These functions are easy to use, but for some weird reason, the explanations are split up between two sections of the manual, 99 pages apart. You can also add strings, so
LET C$ = A$ + B$
is valid. You need to dimension the length of strings for proper string arrays, so DIM A$(9,5) will give you an array of nine words, each up to five characters long.
The manual is a great improvement over the much-criticised one provided with the ZX-80. For a start, it is comprehensive and covers all the functions available on the computer. It gives a proper list of system variables and addresses, has a brief chapter on machine code, includes a memory map and overall, does not make the assumption - which the ZX-80 manual did - that ZX-81 owners are unlikely to ever progress beyond the most straight-forward use of Basic.
The style of the manual is attractive, and is generally very friendly. It admits, where necessary, the limitations of ZX-81 Basic. The only real disappointment is that very few of the programs given in the manual actually do anything except illustrate a specific command. There are no games, even of the excruciating standard of the Nibble The Cheese variety given in the ZX-80 manual. So, even when you have worked through the manual, you still have practically nothing you can Run on the ZX-81.
Sinclair Research despatched the EPROM new-ROM ZX-80s to programmers to create a library of software to sell. There are four cassettes available; three games cassettes - two for 16K, one for 1K - and a “serious” pack containing Telephone, Note Pad and Bank Account.
Unfortunately, the instability of data within the ZX-81 means, in my opinion, that you would be unwise to enter information of value into the Telephone or Note Pad programs. The programs do little, except use a clever, extremely fast machine-code search routine, which you could not do with a piece of paper or card system. Bank Account is more attractive, but you would lose the state of your accounts if you could not Load the program at some stage.
The games programs are more interesting - and not just because I wrote a few of them. Cassette 4, for example, contains Lunar Landing, 6K, Twenty-One, 3K, Combat, 3K, Substrike, 2.5K, Codebreaker, 2K, and Mayday, 2K. They are good value indeed for £3.95, and although I could not Load them all - the Load reliability of the ZX-81 is much better than the ZX-80, but still far from perfect - the ones I ran made good use of both the mathematical abilities of the ZX-81, and the enhanced display using Slow. The 1K pack contains a superb Life, plus five other games.
Sinclair Research is working on a “computer learning laboratory” book and cassettes combination, as well as program packs suitable for teaching young children. As with the ZX-80, a whole cottage industry will arise to produce ZX-81 and new-ROM software. This time, however, the price structure will be dictated by Sinclair’s very low price.
The printer was introduced in part to make the ZX-81 useful in computer-science courses which demand computer printout as part of their assessment program. It will have much wider use than this, and if the quality of the off-the-shelf printer is as good as the demonstration model I have seen, there is going to be a huge demand for it.
The printer works in a radical way. It is about the size of two cigarette boxes tying on their sides stacked on top of each other. A little ribbon flies around inside the printer base, with two needles protruding from the ribbon.
The needles “scan” the paper the same way a TV screen is scanned. When the printer meets a black dot on the TV screen, the needle darts forward and puts a similar dot on the 10cm. aluminised roll of paper. It takes about 12 seconds to print one screenful, and can either print the display - a screen at a time - or reproduce the entire listing.
The printer can be driven by both the ZX-80 with new-ROM, and the ZX-81. The commands LPrint and LList are just like Print and List, except they use the printer instead of the television screen.
The program to print a sine curve was reproduced, with permission, from Getting Acquainted With Your ZX-81, published by Database Consultancy.