A review of the Jupiter Ace.
Published in Personal Computer World, 1982.



Jupiter Ace
The fastest micro computer in the universe? Mike Curtis investigates a new British micro that spurns Basic in favour of Forth


At last there has appeared on the market a small computer which does not use Basic as its principal language – and about time, too, as many people will no doubt think. There is no doubt that Basic is a good language for absolute beginners to play about with, but it has severe limitations and most people would soon outgrow it if it were not for the rash of 'super-Basics' with limitless features which only really hide the problem rather than solve it.

Forth has long been touted as a possible alternative to Basic for very small systems because of its compactness and high speed of execution; but although Forth is now available for many machines no one up until now has taken the plunge and produced a machine for the mass market which has Forth as its main – and indeed its only – language.

This ground-breaking machine is the Jupiter Ace and it comes as a surprise to those of us who have been waiting for a Forth machine: for a start it is a much smaller machine than I would have anticipated, priced to put it in direct competition with the Sinclairs, Acorns and other giants of the mass market; and secondly it uses the Z80 which, excellent chip though it may be in other ways, is less suitable for a Forth machine than say a 6809. However, the Ace is certainly an interesting machine with many features to recommend it both to absolute beginners and Forth enthusiasts.


Article illustration

Hardware

The Ace has the look of a ZX80 about it; a small white plastic case measuring 210cm by 190cm [sic. Obviously should be 210x190mm.] and a rubber keyboard, each key having a number of symbols on it. The Sinclair background of the designers shows through in a number of other ways too. There are two edge connectors at the back of the case, one of which looks just like a Sinclair interface but isn't quite; in fact the same signals appear on this connector as do on a ZX81 or Spectrum but they are not quite in the same order so you cannot plug in extra memory and the printer straight away; however, an adaptor between the two would be easy enough to make and doubtless one will be appearing soon.

There are four sockets around the side of the case: one jack socket for the power which comes from a separate power supply with an integral mains plug, one phono socket for the UHF output to a normal television and two for connection to a cassette recorder.

All leads are supplied – the power lead and the television lead are of quite reasonable length, but the cassette leads are a bit short and use only jack plugs instead of the more common DIN plugs. The sockets are labelled on the underside which means that anybody (like me) who gets worried about plugging the power supply into the wrong socket has to keep turning the machine upside down.

The underneath also holds the interesting observation 'No user serviceable parts inside'. The user is clearly not intended to venture inside this machine, for the case is held together by a sort of plastic rivet which needs the application of pincers to remove.

The insides of the Ace are very much as you might expect: there is a single board, the front half of which is taken up by the keyboard. The rubber sheet which forms the keyboard lies loose on the board, and when a key is pressed the part of the rubber under the key moves down to make a contact on the board. I have been told that the design has been improved to overcome the tipping problem, but it still does not impress me very much. I think I would prefer to pay the extra and get a machine with a proper keyboard.


The Z80 processor sits at the back left hand side of the board with 8K of ROM in two chips next to it, and the loudspeaker. The rest of the board is taken up with discrete logic TTL; no ULAs and so hopefully no delays! The design again is reminiscent of the ZX80. The board itself is not of the highest quality but it looks well put together; it will need to be strong because the case itself is quite flimsy.

There is no on/off switch – the power plug being simply removed and inserted to perform this function. When the plug is inserted and the television tuned in then you are rewarded by a black screen with a small rectangular cursor at the bottom left hand corner, a refreshing change from the usual blowing of horns (and own trumpets) so beloved of many manufacturers.

A good approach to any new Forth system is to get it to 'VLIST' all the words in the dictionary, which breaks the ice by filling the screen with characters; it worked normally on the Ace.

The first noticeable thing about actually using the Ace is that the keyboard could take a lot of getting used to; each key needs a firm push in the centre otherwise it is liable to tip sideways and not make contact. There are both lower and upper case letters available, and most keys also have a symbol on them; there is a normal shift key on the lower left hand side which gives upper case letters but also gives some control functions when used on the top row of numeric keys.

For example, shift-0 is to delete the previous character, shift-9 switches to graphics mode, shift-5 to 8 are the four cursor controls, shift-4 inverts the video, shift-2 is CAPS LOCK and shift-1 deletes an entire line. [These are almost exactly the same as the shift-key assignments on the Sinclair Spectrum!]

The second shift key on the right hand side is labelled 'symbol shift' and is used to obtain the mathematical and punctuation symbols on most keys. All keys are the same size except for the space which is double sized and in the extreme bottom right hand corner; shift space acts as a BREAK in most circumstances. The display is black and white giving 24 lines each of 32 characters. It is not a particularly good display (but reasonable for this price of machine), having no proper descenders on lower case letters, for example.


All commands are entered on the bottom line of the display, and on pressing return they are moved to the next available line at the top of the screen and then executed. Ace Forth does not distinguish between upper and lower case for commands, all words being converted to upper case before incorporation into the dictionary, though they are distinguished in anything that is not a dictionary name – ie, string input.

Software

The list of words produced by the VLIST command shows a fairly normal Forth basic dictionary with one or two omissions and one or two additions to the 79-Standard. The one major departure from any other Forth system I have ever used is the way of entering and editing source code. Normal Forth systems are 'screens' which are 1K blocks of memory normally held on disk and transferred into a buffer when needed; a vocabulary of editor commands is used to manipulate text on these screens while they are in memory – for example to write Forth code which can be saved on the disk or loaded into the dictionary. A sort of virtual memory is used, where the system will decide whether a given screen is in memory, and fetch it from disk if it is not.

This has always been a difficulty with cassette-based Forth systems; how to duplicate this system? It has normally been resolved by the use of a number of buffers in RAM as a pseudo-disk whose contents could be written to or read from tape.

The Ace uses a different technique entirely: incorporated into the basic dictionary are three words LIST, EDIT and REDEFINE which use a powerful decompiler to edit source code. Forth definitions are entered at the keyboard and entered into the dictionary immediately; this can be done on most Forth systems but that new definition is not normally accessible anymore except to execute or forget it.


The Ace, however, can access any word that has been defined in this direct way: LIST will list the definition of the word on the screen, EDIT will make it available for editing using the cursor keys. As soon as enter is pressed the new definition is added to the top of the dictionary. This of course leaves you with an extra copy of your word but the use of the command REDEFINE causes the new copy to be put back to the previous position in the dictionary with the rest of the dictionary being adjusted accordingly. The same edit mode is entered if there is an error in a word definition.

An interesting side effect of this form of editing is that it is possible to make forward definitions, using words that have not yet been defined; the trick is to use an arbitrary predefined word in place of the yet-to-be-defined word. Later, when you have defined this word properly, you can return to the higher level word which is meant to use it and insert it in the appropriate place. REDEFINE will now move this high level word back, pointing forward for one of its components.

The problem of saving to tape is overcome in two ways: the entire RAM dictionary (that is, excluding the predefined words in ROM) can be saved to tape using the SAVE command, and these tapes can then be loaded using the LOAD command to be added onto the dictionary. There is also a VERIFY command to check the contents of a tape against the contents of memory.

The second way of saving data is by the BSAVE, BLOAD and BVERIFY commands which save, load and check a block of memory between two addresses on the stack. This could be particularly useful for saving screen pictures from the memory mapped screen. I tried recording and playing back on two standard cassette recorders; one gave no trouble at all, the other gave a few problems but it's one I've had trouble with before. The standard of recording seems quite adequate and fast at 1200 baud.


The rest of the supplied dictionary is fairly standard (see the accompanying table of words for a more comprehensive comparison with 79-Standard Forth), but there are some more interesting features. There is a floating point facility supplied, which should placate many Forth critics. Words F+, F-, F*, F/, F., FNEGATE, INT and FNEGATE [sic] allow a full range of floating point calculations to be done to 6-digit precision and the normal Forth double numbers are available as well.

There are words VIS and INVIS which can cause the screen to blank out and reappear and (another relic of the ZX80?) the words FAST and SLOW to control the speed of execution.

FAST does not use any error-checking procedures (such as stack size) so programs run appreciably quicker, but of course this should not be used until the program is known to be working properly in the SLOW mode.

There is a limited sound generation facility using an internal speaker, and the word BEEP is provided to control this. It takes two parameters off the stack to specify pitch (period in units of 8 microseconds) and duration in milliseconds. There is a table in the manual giving appropriate pitch values for various notes. The sound produced is rather weak but it could produce reasonable sound effects for games.

The other major provision is a graphics facility provided by the word PLOT. The resolution is 64 pixels across by 46 down, which is hardly high by today's standards but the graphics are generally easy to use; it is quite painless and a good exercise to define your own words to draw lines or shapes, and the speed of execution, even in slow mode, is very good as you would expect from Forth. Animation is straightforward and it is possible to get a higher resolution if desired by programming the character generator which is RAM-based. Some examples of how to do this are given in the manual.


One other noteworthy difference between Ace Forth and 79-Standard is the provision of two constructions DEFINER......DOES> and COMPILER......RUNS> to replace the normal CREATE......DOES> construction to define new defining and compiling words. They work in the same way, though, and so anyone who is familiar with Forth or who is using a book such as Starting Forth should find no difficulty.

CODE definitions are provided to produce faster execution for hex instructions (or decimal or any other base) as no assembler is included, which is fairly unusual for a Forth system. Given the extensible nature of Forth, however, once the user has become a reasonably competent programmer they should soon be able to produce an assembler vocabulary if desired.

The way that this Forth system works is another interesting departure from the norm. Most Z80 Forth systems use the machine stack for the data stack and arrange the return stack by other means, but Ace Forth does the opposite. Indeed the data stack is not in a fixed position at all but remains at 12 bytes up from the current top of the dictionary, the ROM part of the dictionary occupying the bottom 8k on the memory map. The return stack is placed via a system variable at the top of available memory and grows downwards, the dictionary and data stack growing up to meet it.
The 3k or so of space that is available for this...is much more usable than you would expect because of the compact nature of Forth, but it is not exactly huge and you are going to run out of space fairly soon;

there is not sufficient space to store all the Benchmarks at the same time, for example. This organisation does, however, mean that the system can immediately take advantage of extra memory simply by initialising the return stack at the highest available memory.

The version of Forth implemented on the Ace, in summary, is a good version which incorporates all the desirable features of a standard Forth dictionary with additions to make full use of the features of the machines; some useful words which are omitted can easily be added if the need arises.


Documentation

The manual is impressive; written by Steven Vickers, one of the two designers, it sets out to be both a user's manual and a self-instruction course in Forth. It does not quite succeed but it does as good a job as most other manuals for machines in this class. It has 181 pages with illustrative examples of the use of all the words in the dictionary, and reference sections including details of the memory map and locations for all the system variables, so all features of the machine are available to the user. A section of the manual explains how to write code definitions (words defined in machine code for extra speed).

The manual is written in a fairly light-hearted manner, so that anyone intelligent enough to want a computer in the first place should be able to make sense of it. An illustration of the style is this quote from the section on loading programs from tape: 'Let us suppose that your tape has an interesting program called DVLC – it runs a game in which you are menaced by hundreds of vehicle licence application forms falling out of the sky, and you have to destroy the enclosed vehicle registration documents.' Clearly the author has had a recent unfortunate experience.

Benchmarks

The Benchmark timings given below were taken using the Benchmark programs discussed elsewhere in this issue. They were taken in SLOW and FAST modes. The word SP! which is an essential element of these benchmarks is not available in Ace Forth, so I have defined it as
:SP! HERE 12 + 15419 !:
Where HERE 12 + calculates the bottom of the stack at 12 bytes up from the next dictionary space and 15419 is the address of the system variable SPARE (not available as a Forth word) which holds the next free space on the stack. The timing of 'magnifier' is subtracted from the other figures to compensate for the time taken by SP! which would, of course, have been much quicker if defined as CODE.


Conclusions

The Jupiter Ace is a cheap computer at £89.95, and externally it looks cheap. It does not have colour and with the price of colour machines dropping fast this could turn out to be a big disadvantage. It has as yet no peripherals, though Sinclair ones can be adapted and Jupiter themselves will shortly be bringing out a parallel Centronics interface. There is no software around either as yet but hopefully this will change soon especially if a large number of machines are sold; it could even bring about a boom in Forth software which could be run on a variety of machines.

It is a bit difficult to imagine what the market for this machine will be; a lot of people may be put off by the Forth language itself with its use of Reverse Polish notation (calculators which use this system have never been particularly popular except in the scientific community). However, there are real benefits to be had from this machine as opposed to many of its competitors; programs will run appreciably faster than their equivalents on a Basic machine; anyone who is prepared to persevere with Forth will find it a rewarding experience which will lead to a quicker program development time, and more reliable programs as well as a better understanding of the operation of the machine; and simple Basic interpreters written in Forth as well as a lot of other interesting software are available through the Forth Interest Group.

The Jupiter Ace is a very interesting machine; I would not like to predict whether or not it will be a sales success but it deserves to be. It uses a very good version of the Forth language and has a reasonably clear and detailed manual.

The Jupiter Ace is available only through mail order at present from Jupiter Cantab Ltd, 22 Foxhollow, Bar Hill, Cambridge CB3 8EP. The price including power supply and leads is £89.95.


Drawing of Jupiter Ace

Benchmark timings

BMNameTime SLOWTime FAST
1magnifier10.66.3
2do-loop27.820.9
3literal44.528.6
4variable42.627.4
5literal-store77.143.6
6variable-fetch60.736.1
7constant43.327.4
8dup64.739.9
9increment62.938.0
10test>3.1 [sic]51.5
11test<113.971.6
12while-loop131.381.9
13until-loop127.978.6
14dict.-search16.712.4
15arithmetic98.562.6
See also 'Forth Benchmarks' elsewhere in this issue

Fig 1. table of Forth words used by the Jupiter Ace
!**/*/MOD
+LOOP.,
-."//MOD
0<0=0>1+
1-2+2-:
;<=
>>R?DUP@
ABORTABSALLOTAND
ASCIIATBASEBEEP
BEGINBLOADBSAVEBVERIFY
C!C.C@CALL
CLSCOMPILERCONSTANTCONTEXT
CONVERTCRCREATECURRENT
D+D<DECIMALDEFINER
DEFINITIONSDNEGATEDODOES>
DROPDUPEDITELSE
EMITEXECUTEEXITF*
F+F-F.F/
FASTFINDFNEGATEFORGET
FORTHHEREHOLDI
I'IFIMMEDIATEIN
INKEYINTINVISJ
LEAVELINELISTLITERAL
LOADLOOPMAXMIN
MODNEGATENUMBEROR
OUTOVERPADPICK
PLOTQUERYQUITR>
REDEFINEREPEATRETYPEROLL
ROTRUNS>SAVESIGN
SLOWSPACESPACESSWAP
THENTYPEU*U.
U/MODU<UFLOATUNTIL
VARIABLEVERIFYVISVLIST
VOCABULARYWHILEWORDXOR
[]
The following 79-Standard words do not appear in Ace Forth: ", +!, -TRAILING, 79-STANDARD, >IN, ?, CMOVE, COMPILE, COUNT, DEPTH, EXPECT, FILL, KEY, MOVE, NOT, STATE, [COMPILE], SP!.
The following words are extra to 79-Standard Forth: ASCII, AT, BEEP, CALL, CLS, FAST, IN, INKEY, INVIS, LINE, OUT, PLOT, RETYPE, SLOW, VIS.

Technical specifications

Processor    Z80 3.25MHz
ROM8k
RAM3k
KeyboardRubber keys. 40 keys with auto-repeat and caps lock
Mass storageDomestic cassette recorder, 1500 baud.
ScreenTV (black and white). 32x24 characters, 64x46 dots in graphics
SoundInternal speaker
PortsExpansion port contains power rails, address, data and control lines. Accessible through IN and OUT.
LanguageAce Forth




2007 Comments



Chronological listing
Back to chronological list

Home Page
Home Page

 



1