Reviewer: Bill Bennett
Magazine: Your Computer
Date: February 1983
There are two ways of making money from engineering and the same rules apply whether you are a car manufacturer or a computer designer. The first way is to produce some astounding new idea or gimmick, and pray that the idea catches on. This is a risky business, but it can pay huge dividends: for example, there was the ZX-81 and the model T Ford.
The other way is less fraught with danger, but then the designer stands to gain less too. It involves looking at existing engineering ideas and combining a number of them in a new way. This is what has happened with the Lynx.
The Lynx is simply a good micro. It has no wonderful outstanding qualities, but in every department of its specification it ranks alongside the best. It is as though the designers took the best features of all the popular micros and put them together in the one box.
So the Lynx represents a consolidation of previous advances as well as a tiny advance of its own. By utilising technology that has already passed the test of time, it should have fewer teething troubles than some micros which aim to break new ground. The standard Lynx has 48K of user RAM, which leaves 16K for programs and data when in the high-resolution graphics mode. This can be expanded inside the case in steps of 64K up to a total memory size of 192K. The high-resolution graphics mode really is high resolution with 248 by 256 pixels.
The Lynx is based on the Z-80A micro-processor, which has an excellent track-record as the chip at the heart of the Sinclair Spectrum. The choice of processor has a number of implications. First, and probably in the long run, most importantly, it means that the Lynx is CP/M-compatible.
CP/M is the operating system most widely employed by the larger microcomputers used in business. It handles files of data on the floppy discs those larger micros use. The most important thing to bear in mind is that in theory a program written in CP/M on one machine can be transferred to another machine with the minimum of fuss.
Of course in practice there is nearly always a good deal of fuss, but it does allow the user access to thousands of computer programs and systems, as well as a growing number of databases that are being made available on CP/M. CP/M is far from perfect, but it is the operating system that comes nearest to ironing out all the differences between various micro-computers.
To run CP/M, a computer needs a minimum of 64K of RAM - hence the importance of the ease of memory expansion on the Lynx. The upper limit of 192K means that some very substantial software packages will run on the machine.
Most people thinking of buying a Lynx will probably not be interested in CP/M software immediately. It is, however, very reassuring to know that should your hobby ever become more than just that, you will not have to throw your Lynx away and buy a new micro. The second significant implication of that Z-80A processor is that it makes the Lynx a possible upgrade for those ZX-81 users who do not want a Spectrum. The Lynx is more powerful than the Spectrum but then it costs £50 more. But what will attract people is a simple-to-use machine-code facility. Machine code is the language a computer uses internally, as opposed to the Basic which is really there for the benefit of humans who, unlike computers, do not normally think in binary. When a program is written in Basic, each line has to be converted into machine code every time it is acted on, and that conversion takes some time. As anyone who has played a machine-code game will be able to tell you, machine code works much faster than Basic.
The monitor in the Lynx's ROM allows the user to write and edit programs written in machine code. It also means one can save and load these programs to and from tape. The other advantage of machine code is that programs require far less space than Basic programs - and with 48K of RAM at your disposal, some substantial programs can be written.
The manual rather coyly shies away from the subject of machine-code programming. There is a chapter on the subject, but this is only for those who already know something about it.
Some interesting commands are available to the brave souls prepared to grapple with machine code, all of which are available from Basic. This means that the main part of the program can be written in Basic, with machine-code routines handling those features which require speed, such as graphics or sound. Not only is there the Poke command - which will be familiar to experienced programmers - but also the DPoke command which Pokes to two bytes at a time.
The command Code allows you to store machine code in a Basic line. LCTN is in effect a pointer to the first byte of machine code stored in a Code line: it is used like an ordinary variable. Type Call to tell the computer to execute the machine-code sub-routine held in one of the Code lines, which is specified by LCTN.
Bytes of data can pass into and from the Lynx via the I/O port at the rear. This can be done using the commands INP and Out. The music-making facility of the Lynx is limited when in Basic. A Beep statement is all that is open to you. This is a major disappointment on a number of counts.
First, the box in which the Lynx is supplied promises a digital-to-analogue sound converter. This turns out to be little more than a small speaker. The Beep statement also disappoints because rather than entering a note name - or even a number corresponding to a particular note - you have the following format:
BEEP wavelength, number of cycles, volume
The volume can be any number between 0 and 63. To be able to hear anything you are obliged to use 63 all the time, which is regrettable as it reduces the flexibility. The wavelength and the number of cycles have to be calculated beforehand. Furthermore, I am not convinced that the wavelengths are that accurate in practice.
If microcomputer manufacturers paid a little more attention to the sound possibilities of microcomputers, the results would be astounding. A good example of this is the way in which sounds can be "synthesised" using machine code on the Lynx.
The Sound command is a good idea, which allows interesting possibilities, but a few Basic statements could be a more powerful. Sound works by outputting a number of bytes of memory through the speaker. With a memory of 48K, relatively complex sound patterns can be achieved. Sadly there is only one voice channel, but even with this restriction good effects are still possible.
Speech synthesis is also a feature according to the manual, but the output is so quiet that you may never hear it. By connecting an analogue-to-digital converter, the Lynx could take noises, store them in memory and replay them. Even processing of stored sounds is possible. I managed to synthesise white noise by feeding the loudspeaker a series of random numbers.
The documentation concerning the Sound command is woefully short in the manual. For a command like this giving no examples is really not good enough. More to the point, those who use the Beep command are not even given a list of which wavelength corresponds to which note in the musical scale. On the whole the manual is not as comprehensive as it should be.
It is a glaring failing for a home computer manual like this one not to have a proper index which allows users to find the information they require quickly. It might be right to omit information which is readily available elsewhere, but I cannot see why facts relevant to the Lynx are missing. As a teaching manual, for someone who wants to learn about computers, it is adequate, and certainly better than the Dragon manual.
The Lynx has a number of commands and language features not seen elsewhere, giving the machine a particularly strong, if a little odd, version of Basic. I like the structures, Repeat-Until, and While-Wend. They give Basic a class not normally associated with it. I also like the automatic indenting. It really does make programs easy to read and, more importantly, easy to debug.
Lynx Basic has all the old favourite commands, including the now essential Trace to let you know where things have gone wrong. Swap is interesting as it allows you to swap the values of two variables. Pause will hold up the computer for a specified amount of time. UPC$ is a string function that converts all the letters to upper case.
Among the commands used in the tape operating system are Append which permits you to add subroutines to the end of a program, and MLoad which loads machine code from tape. The baud rate can be selected using the Tape command. Like the BBC micro, the Lynx allows Procedures, which will keep the educationalists happy - they like structured programming.
The graphics on the Lynx are perhaps its strongest feature. Resolution is high, and unlike most other home computers all eight colours can be mixed on the same screen. There are 256 by 248 pixels, and a good set of commands to use them to create some very good graphics.
Window is a strange command which disables part of the screen, allowing writing only within the window area specified. Print@ allows printing to start at any given pixel location on the screen. This means it is possible to print subscripts and superscripts, a useful facility for writing mathematical or chemical formulas on the screen. There are commands which let you play around with the cursor, and a VDU command which is not as complicated as the BBC VDU command.