Sinclair ZX 81
Right from the start, I had better explain that the ZX81 costs £50 in kit form and £70 ready-built and, as such represents absolutely amazing value for money. Whatever shortcomings are highlighted in this Benchtest must be weighed against this fact.
Like the ZX80, its predecessor, the ZX81 will be available by mail-order and, by the time you read this, deliveries should be coming through. Clive Sinclair tells me that he plans to up production to 10,000 units per month starting in April and that he’ll be producing 10,000 ZX80s to satisfy overseas demand, so, providing that 10,000 or fewer of you order the new machine per month, delivery should be swift.
Sinclair has been a bit cheeky in his advertisements. Under a column entitled „New, improved features“, he proceeds to mention three things that were included in the ZX80 when it was launched over a year ago! For the benefit of those unfamiliar with the ZX80, it was the first ready-built computer to break the psychological 100 price barrier. It was well made but looked slightly cheap in its lightweight plastic case and with its shiny keyplate. The „keys“ were printed on a plastic membrane with a metallised back; when each „key“ was pressed, the metallic back came in contact with PCB tracks, shorting them to complete the appropriate circuit. The system plugged into the domestic television to give an extremely clear display, and program storage could be made onto the home cassette recorder. The ZX80 came with 1k of user memory (RAM) and a 4k operating system/Basic language chip.
The main limitations of the ZX80 were the fact that it could not handle floating point numbers or cassette files. Also, when first launched, memory expansion came a bit expensive but this changed when the 16k plug-in RAM became available. The ZX80 certainly represented a great step forward and offered excellent value for money for people wanting to learn about computing.
So what in the ZX81 is new, compared with the ZX80? First, an extra 4k of ROM is provided, which allows 30-odd additional functions to be incorporated. This will also drive the printer (expected in the summer). I couldn’t test this, but I have seen it working. It is an electrosensitive printer requiring aluminised paper, the surface of which is burnt off by an electrical discharge to reveal the black paper underneath. Don’t study the photos too closely, because they show a model, not the real thing. The ZX81 costs an amazing £30 less than the ZX80, thanks to some neat design consolidation in a Ferranti chip custom-built to Sinclair’s requirements. The total number of chips in the basic system is four, against the ZX80’s 21. The ZX81 and its peripheral products are all cased in sturdy black ABS plastic. And very nice it looks, too.
Although physically smaller than the ZX80, the new machine weighs in at 130z, about 20z heavier than its predecessor. The system needs a UHF television, a cassette recorder and a power supply to make it usable. On my colour television the screen is a pleasant green and all characters are displayed in black. The machine offers no colour facilities and my guess is that you shouldn’t hold your breath waiting for them. I suspect that a projection system based on three of Uncle Clive’s miniature TV tubes might appear one day but, then again, I also suspect that he’d introduce another computer to take advantage of this. The display is 24 lines of 32 characters of which two lines are reserved for system messages and commands. Low resolution graphics are provided to give 64 by 44 plotting points. As with the ZX80, the display is very clear and rock-steady.
I’m pleased to see that the new power supply has its own flying lead for the attachment of a normal mains plug. (The ZX80 was awkwardly designed with an integral plug which often needed an additional socket or extension lead.) This power supply must give 600 mA at 9V but, since the ZX81 draws close to this, the standard power supplies actually give 700 mA and I would recommend that readers using their own supplies go for the higher rating, too. Once again, the keyboard is formed by an underprinted plastic membrane which is everything-proof (water, chemicals, Coca-Cola, cigarette ash, monkeys, editors, etc.). The keyboard layout is different from the ZX80’s so, if you’re upgrading, prepare to make a few mistakes at first. At the same time it is an improvement, since each keyword is frequently placed at or near its initial letter. (All you have to do now is learn the qwerty layout!) Here are a few ideas for Uncle Clive: a plug-in battery pack, a plug-in single line LCD display and a remote (infra-red or ultrasonic) facility so that you can sit in your armchair beaming the display information at an aerial adapter on the television.
Compared with the ZX80, the ZX81 looks very smart indeed – one could almost say tasteful. It has a nice shape and texture and the keyboard is made of a non-reflective material, a definite improvement.
The plug-in 16k RAM pack fits to the edge of the PCB where it protrudes from the rear of the casing. The cursor takes a while to appear at switch-on, because the system is checking to see how much memory is present in order to set certain system variables. If you’re a machine code freak you can reset the RAMTOP variables in order to give you somewhere safe to tuck your precious program.
Five screws hold the ZX81 together, three of them are hidden under the pads on which the machine stands (footpads? surely not). You know what I mean? those non-skid things. There’s a substantial heat sink for the regulator under the rear of the keyboard – it’s a good place to warm your hands on a chilly morning. The PCB is held into the casing by two screws. The keyboard is separate from the main PCB and is connected to it by a couple of flat printed cables. The main PCB is well designed and neatly made. Assembly of the ZX81 is done very professionally by the Timex Corporation in Scotland (the same people that are making Sinclair’s latest miniature television). The basic ZX81 contains four chips – ROM, 3.5 MHz Z80A CPU, 1k memory and the Ferranti custom-made chip – plus a limited assortment of bits and pieces. It’s very, very simple . I think even I could build it. A few spare positions on the board give the manufacturer a certain amount of flexibility to tweak the machine to the requirements of different television systems and to be prepared in case a memory chip famine occurs. The Ferranti chip handles all the I/O and control signals between the various elements of the machine. Nosing around inside, I notice that it has a very cosmopolitan flavour with memory from Malaysia, the CPU and ROM from Japan, a UHF modulator from the Philippines, a regulator from El Salvador and the custom chip from Britain. The edge connector is not gold-plated (what do you expect for £70?); it’s just the PCB printing taken out to the edge. The 16k RAM pack contains two boards connected at the edge. One board contains eight 4116s which are driven by the other board’s assortment of seven chips which handle the memory addressing and refreshing.
The ZX81 syntax-checking is excellent because, unlike the ZX80’s, instead of operating on each character as it’s entered, the system waits until NEW LINE is hit. Finding your way around the keyboard at first is a real hoot – some of the keys have five functions. As before, the single stroke keyboard entry is a joy to use and the automatic spacing inserted by the system makes program listings clearly legible. For example, if you tried to enter 10FORN=lTO10, it would appear as 10 FOR N=1 TO 10. Pretty neat, huh? Editing is very simple. You position the cursor on the line to be modified, hit the EDIT key and then make your corrections. Additional characters and functions are automatically inserted at the cursor position within the line while RUBOUT deletes the character or function to the cursor’s left. A touch on the NEWLINE key confirms the changes.
The machine can be used as a calculator but shouldn’t be bought for that purpose since the precision is less than one would expect of such a device. It is, however, far better than the integer-only ZX80, offering +/-, 10+/- 9 power of 38). If numbers get out of hand it presents results in standard scientific notation. For those who can’t readily visualise this level of accuracy it means numbers up to 4,294,967,295 can be represented with complete accuracy. That’s 2 to the power of 32 – 1. The smallest positive number is about 4 x 1O to the power of -39 . Five bytes are needed to store a number, which goes a long way to explaining why the Benchmark timings are slower than with the ZX80, which only required two.
An enormous number of functions have been crammed onto this rather small keyboard. This has been achieved by using two special keys: graphics, which allows the user to key all the graphic characters as well as the normal characters as white on black; and function, which allows the user access to (surprise, surprise!) special functions. A normal mode of operation also exists. In addition to all this, the keyboard has a bog-standard shift key, thus increasing the range of options for each key still further. The character set is a one-off – it’s, not ASCII or anything I recognise. I think we’d be safe if we called it Clive code. The TV display isn’t exactly memory-mapped – it tends to move around and change its size depending on what’s going on. It is, however, possible to find the start of the screen area and then to access the screen by PEEKing and POKEing the screen locations in the buffer.
All but one of the ZX80’s Basic functions, plus a substantial number of additions, have been incorporated into the 8k ROM which drives the ZX81. The following commands and statements are provided over and above the old ZX80 repertoire: ASN, ACS, ATN, COS, EXP, INKEY$, PI, SGN, SIN SQR, INT, LEN, LN, TAN, VAL, <=, >=, < >, COPY, DIMA$, FAST, FOR … TO … STEP, LLIST, LLIST n, LPRINT, PAUSE, PLOT, PRINT AT, PRINT TAB, SCROLL, SLOW, UNPLOT. The missing function is TL$, which was used to return a string minus its first character. This ROM plus an appropriate keypad overlay is available to existing ZX80 users who wish to upgrade their machine. They should note, however that even with the new ROM they will continue to get the screen flicker which I’m sure, they’ve grown to know and love by now.
The machine can be operated in two modes – SLOW (sometimes called „compute and display“), and FAST. FAST mode offers the world famous screen flicker every time you hit a key while SLOW mode keeps the screen refreshed at all times, resulting in a nicer display, moving graphics and a lot of irritating delays: see the Benchmarks for comparisons. If you need to see the screen continuously then SLOW mode is a boon. If you don’t, say if you were doing lots of calculations, then it’s better to use the FAST mode. The two can be called from within a program thus offering the best of both worlds.
The SCROLL feature removes the top line from the screen and moves each line up, leaving a blank bottom line. Without SCROLL, the display freezes when the bottom line is reached. A PAUSE instruction is provided which suspends a program’s operation for a user-defined period or until a key is depressed. The screen is visible when in PAUSE mode regardless of whether the program is running FAST or SLOW. In SLOW mode the screen flickers slightly when the PAUSE takes effect but in FAST mode it has to come on altogether. This means that you’ll have to be careful not to have your PAUSEs too close together, unless you actually enjoy watching the screen going absolutely bananas. The INKEY$ function is welcome since it can be tested to see if a key is being depressed and, if so, which key it is. This feature is great for fast-moving games since you need only hit the key you’re interested in – there’s no need to hit NEWLINE.
There are no DATA or READ instructions but this can be circumvented by saving a program with all its associated variables and then using a GOTO to kick the program off when it’s reloaded. (RUN automatically clears any variables.) Pressing CONT, not surprisingly, allows you to continue the program. PLOT and UNPLOT functions (0,0 is in the bottom left-hand corner) are provided, giving a graphics capability of 44 by 64 points. Each point, or pixel (picture element), is a quarter the size of a normal character. Hardly high resolution but better than a poke in the eye with a sharp stick! The cassette needs either 3.5mm sockets or an appropriate adapter. SAVE is offered but no VERIFY, so saving a long program can be a bit worrying. I suggest you first save a few short programs, just to make sure the controls are set properly. When loading a program, the pattern on the screen shows you when data is being recognised. The theory of cassette adjustment is that you play a data tape, gradually turning the volume up until the pattern appears. Then you turn it up a little more and it should be ready for use. The printer, when it arrives, will allow you to LPRINT and LLIST data and programs respectively. Even better, it will allow you to dump the screen contents to the printer using the COPY command either within the program or as an immediate instruction. Such a screen copy takes about 12 seconds to produce.
The only function to disappear is the TL$ command mentioned earlier. The same thing can be accomplished using the LEN and TO instructions. All trigonometric stuff is in radians and PI is provided to help you unravel the results. SGN = signum which can possess one of three values: – 1, 0 and +1. At one stage the new ROM (for the ZX80 and, subsequently, for the ZX81) was expected to offer DRAW, UNDRAW, DATA READ and RESTORE features. Instead I think the idea of adding printing facilities became more important. After all, these features can be realised using the existing range of commands. A character string of any length may be used as a numeric variable name, providing it starts with a letter. String variable names are restricted to A$ to Z$. String and numeric arrays may be any number of dimensions – the limit is dictated by the amount of free memory available. String arrays are character arrays really, with the last entry in a DIM statement being the number of characters per array element. With a full 16k RAM and a small program (it fitted on the screen) I set up a string array 100 x 6 x 25 characters long. I used this since each element would be about the size of a name and address record, allowing extra information like telephone number and birthday, for example. Substrings are handled using the TO function. LET A$B$ (3 TO 5) would make A$ a three character string comprising the third to fifth characters of string B$. This opens up possibilities for giant strings and the use of string slicing to extract variable length fields.
A programming book is provided with the system: ZX81 Basic Programming by Steven Vickers. The cover is a very odd photo (montage?) of what appears to be a couple of model delta-wing jets on top of a solitary skyscraper at night. Two red windows peer at you from the upper floors. It must be full of deep meaning which totally escapes me. Sinclair Research specially commissioned it. Can any psychologist readers tell us what it’s all about, please?
The book is written for the novice, and it does a pretty reasonable job. It is infinitely better than the book given out with the ZX80. What a pity, then, that just as the reader is about to key something in for the first time, he encounters the most off-putting (and unnecessary) paragraph in the whole book: „A message like this, telling the computer to do something straight away, is a command; this particular one is a PRINT command, but also a PRINT statement. Calling it a PRINT statement just specifies its form without referring to how the computer is going to use it. Thus every command takes the form of a statement, but so do some other things – program lines do, as we shall see in Chapter 8.“
The style of the book isn’t really to my taste, although Steven reveals a lot about himself with his talk of dead tax collectors and expressions like „Lor‘, love a duck“. Eye fans will be delighted with his reference to Talbot – on page 38 (I find the question-mark rather becoming, don’t you?). Oddly, error codes are referred to as report codes. Perhaps the idea of associating errors with the machine was just too abhorrent, even if they do happen and even if they are usually the user’s fault. Ho hum – more psychologist fodder. There are the usual typographical errors which didn’t get cleared up but I couldn’t find too many. The only other thing in the manual which actually troubled me was the reference to pounds, shillings and pence in one programming example. My kids (aged ten, eight and six months) didn’t know what it was all about and let’s face it, a lot of these machines are going to be bought by, and for, kids.
Who would use this machine? Kids will love it (so will Dads) and, at this price I can’t think of a better way of introducing them to the subject. Most courses on computers and especially on Basic programming cost more than the ZX81. In my view you can buy a ZX81, have a lot of fun, learn a bit about computers and Basic programming and decide whether you like it or not. If you don’t like it or if you decide to move on to bigger and better things you can always sell the machine (or give it to ComputerTown). The 16k RAM pack is a must for anyone doing anything remotely serious. The printer, when it arrives, will give you the chance to keep a record of all that interesting stuff you’ve got locked in the machine. The floating point arithmetic certainly makes the ZX81 a more useful machine than the ZX80 and I suspect that many people will give it serious consideration as a result. You must bear in mind the sort of limitations imposed by the ZX81’s inability to handle files. You can save a program with all its variables on tape, which gives you 16k for both programs and data. In my earlier example, I managed to get 100 records of 150 characters each into memory with a short program of 20 lines or so. There’s no reason why you shouldn’t record the program again with another 100 records, which would overcome this particular limitation. The only problem you’d be left with, then, is the fact that other programs cannot access the same data. I think that if you’re really worrying about this sort of thing then maybe you require a more substantial system.
Expansion possibilities for the ZX81 are limited at the moment to the printer and the 16k RAM pack. I asked Clive Sinclair if there was any chance of disks being developed and he gave the same enigmatic answer he gave a year ago when I asked the same question about the ZX80: „We’re working on it.“ Draw your own conclusions.
He’s done it again. Uncle Clive has come up with a lovely product which will have enormous appeal to people wanting to find out more about computers, but without it costing them an arm and a leg. The idea of producing a superior machine to the ZX80 and selling it for a lower price is absolutely wonderful. I’m full of admiration for the man. Most people would have upped the spec and held the price („It really hurts me to do this“) or even increased it slightly. The product is clearly aimed at the home market and I’m sure that it will do extremely well there, far better in fact than the ZX80. And that’s rapidly becoming the biggest selling micro in the world! People who are wondering about its relevance to business or serious work at home ought to sit down and do a few calculations on just how much information they need to hold and how they wish to access it. You could hold 100 or so names and addresses or keep track of around 600 financial transactions in one load of the 16k memory. These figures allow for a fairly simple entry and enquiry program in each case. By abbreviating information you can clearly cram more in. By splitting your information across several tapes you can build a substantial file of information but each tape would have to be managed by a separate version of the program.
If you know nothing about computers and you want to enjoy finding out about them, then this machine offers a value for money way of doing just that. Children will love the ZX81, there can be no question about that, and I suspect that more than a few people who are already familiar with computers will buy one, just to have a bit of fun.
Kit £49.95 Built £69.95 Mains adapter £8.95 16k byte RAM £49.95 Post & Packing £2.95