Home > Previous Page >  Books that feature the Jupiter ACE
Archive Search  

Books that feature the Jupiter Ace

The Jupiter Ace was not really around long enough to have many books written about it, unlike the ZX Spectrum. In the early 1980`s with so many different home micros on the market users wanted more than to play games. A number of different computer languages started to appear for these machines. Books on these operating systems were written, Forth was not left out in fact a huge number of books have been written about Forth. Only a few books mention the Jupiter Ace, these are listed below with their details, along with some recommended books from the same era of the Jupiter Ace, not forgetting that the best book is its user manual.

Forth Books index

Exploring Forth by Owen Bishop

Exploring Forth by Owen Bishop Granada Publishing 1984.
176 pages paperback.
ISBN 0 246 121882

  The Jupiter ACE is noted on page 4, where its written about Forth words that are unique to the ACE which do not appear in other Forth's such as the BEEP sound word.

Easy Add-on Projects for Spectrum, ZX81 & Ace by Owen Bishop.

Bernard Babani (Publishing) Ltd 1983.
184 pages. paperback.
ISBN 0-85934-099-6

  The Ace is mentioned on pages 4, 9, 10 and 178 see below. The book is about building small electronic circuits and interfacing them with the micros covered in the book. Projects such as Pulse Detector, Picture Digitizer, Five-key Pad, Bleeper, ect. Email me if you would like scans of any of the project, as this book is now out of print.



Page 4

Using the ACE [pages 9 and 10]

As far as the projects in this book are concerned, the Ace provides all the connections required. The edge connector on the Ace board has exactly the same connections as on the ZX81 or Spectrum, but on the Ace they are in a different order. The design for the Decoder board therefore needs amending slightly, or you can make a simple adaptor which brings each line to its correct position for plugging into a Decoder designed for the ZX computers.

The main advantage of using the' Ace is that its language, FORTH, gives it very high operating speed. This makes it part- icularly suitable for the pulse-timing operations required by several of the interfaces in this book. Whereas a machine- code program is essential with the ZX computers, for a few of the projects the Ace operates fast enough when using FORTH. The FORTH language was, after all, designed to be used in controlling astronomical telescopes so it is to be expected that it should excel in controlling other kinds of interface too.

The devices in this book have all been tested with the Ace and work as well on this machine as on the ZX Computers. There is one difference. On the Ace (or at the least on the model used during the writing of this book), unconnected lines usually read as 0, except for line D4 which reads as 1. Consequently, with input to line D0 only, the readings are 32 (0001 0000) or 33 (0001 0001) instead of the values found on the ZX computers. In practice it was found that the values on some of the unconnected data lines 'floated' occasionally, reading either as 1 or 0 at random. For this reason, it is preferable to AND the data input with the value 0000 0001 to eliminated any values appearing on the unconnected lines. The command required is:

31 IN 1 AND

where 31 is the address being read from. This sequence leaves 0 or 1 on the top of the stack, depending on the state of line D0.

Page 178. This page is about programming the address decoder

  The Ace has two words which allow it to interact with the decoder. For reading data from the decoder, or from inter- faces attached to the decoder, it has the word IN. Before IN is used, we place the address to be read from on the top of the stack. For example, to read from address 31 (Data Output 0), we use

31 IN

  This leaves the required data on the top of the stack. As explained on p. 10, it is safer to AND this to eliminate floating values on other data lines. To read line D0 only, we use:

31 IN 1 AND

To read the bottom three lines D0 to D2 we use:

31 IN 7 AND

To read all four data lines D0 to D3 we use:

31 IN 15 AND

  To write to an interface we use the word OUT. This needs data to be present as second on stack and the address on top of stack. Thus to send data 12 to address 63 we type:

12 63 OUT

  Many of the interfaces work by simply addressing an Addressed Output, without actually sending data. Data of some sort is still required on the stack for use by OUT, so a convenient form of command is:

0 63 OUT

Forth for Micros by Steve Oakey

News Technical Books - 1984
148 pages hardback.
ISBN 0 408 01366 4

The book is intended for people who can already program in BASIC, but would like to learn Forth. It teaches Forth by example and comparison. A common set of Forth words are used in the examples though out the book, but there are parts of the book that do not apply to the Ace. In chapter 11, "Versions of Forth", Steve Oakey gives a chapter by chapter notes on the different Forth's that run on micros. see below for the Aces work-around's (pages 132, 133, 134, 135 ).

The Jupiter Ace

This particular micro is neither fig-FORTH nor FORTH-79, so it does not fit this book too well in places. In particular, its input and output are not screen oriented, and therefore Chapter 8 (page 85 onwards) is not relevant to it. That in turn means that some of the later material cannot be easily run on the Jupiter, and you may run into memory-space problems with Chapter 10!

While I am not a fan of the Jupiter Ace (says Steve Oakey), it does have some interesting features as well as some major differences from FORTH- 79. The following list (again separated into chapters) is not intended to be exhaustive, but highlights some of the main differences.

Chapter 2

The Jupiter provides floating-point numbers as a standard facility. This feature introduces the operators F*, F+, F-, F/, F., FNEGATE, INT (to convert a floating-point number to an integer) and UFLOAT (to convert back again).

Chapter 3

FORGET (page 29) is augmented by the word REDEFINE, which allows a new definition to overwrite an old one. This avoids a build- up of RAM that contains old (usually incorrect) versions of words.

Chapter 5

R@ is not provided, but I is a suitable alternative name. If you do not wish to have to remember this for all the following examples, put in the definition

: R@ I ;

+LOOP is the fig-FORTH version. See the comments on page 128 and the text on page 45 for how it works.

Chapter 6

There are some major differences here, as EXPECT is not provided on the Jupiter. All its input is done using WORD (together with some supplementary words it provides), but some of the subsequent exercises use EXPECT and are more difficult to do without it. You can simulate EXPECT by including the following definitions:

 : WAIT 1500 0 DO LOOP ;

 : KEY WAIT
    BEGIN INKEY ?DUP
    UNTIL
  WAIT
 ;

 : EXPECT
   0 DO
     KEY DUP EMIT
     DUP ASCII ~ =
       IF DROP LEAVE
       ELSE OVER C! 1+
     THEN
    LOOP
   0 SWAP C!
 ;
 

This version of EXPECT uses the ~ to end the input instead of a carriage return; if you wish to revert to the standard CR character, replace 'ASCII ~' with '13'. (The WAIT instructions are absolutely essential to debounce the keyboard!) KEY is not present either, but the above definition works quite happily.

NUMBER is provided, but is slightly different from the version assumed in this book: the top-of-stack entry is an integer that indicates whether the number below it is an integer or a floating-point number. Wherever the word NUMBER appears in the examples, you should write NUMBER DROP.

Of the double-length operators in Table 6.1, D-, D/, D*, D= and DU< are absent (none of them are used in this book). The double- length stack operators have only the 2DUP missing. Only the standard */ and */MOD mixed-length operators are provided (page 59).

Of Tables 6.4 and 6.5, only the DMIN, DMAX, 2* and 2/ operators are missing. Only the 2* is used much in later chapters, and it may be worth entering its definition from page 131.

As with the Dragon, HEX and DECIMAL are present, but OCTAL is not. I suggest you play with these two and check the use of OCTAL after you have learned how to define it for yourself (in Chapter 7).

Chapter 7

You should not enter Figure 7.1a as a word, as ASCII is already provided on the Jupiter Ace and the definition in the figure will not work (see the Chapter 9 section below for more details).

The comments regarding VARIABLES also apply to the Jupiter. While the Jupiter does not provide the C VARIABLE mentioned on page 65, it does use them; BASE is a one-byte variable, for instance, though in most other FORTH's it is a two-byte variable.

CMOVE (page 76) is not provided. One definition of it is :-

: CMOVE
  0 DO
    OVER I + C@ OVER I + C!
  LOOP
  DROP
  DROP
;

Chapter 8

The Jupiter does not use screens for input, and therefore much of Chapter 8 (pages 85 onwards) is not relevant.

Chapter 9

The section on complex data structures (page 96) and subsequent examples need to be slightly different. For the defining words that include a DOES> in them, the definition must start with DEFINER rather than a colon. So Figure 9.8 would appear as -

 DEFINER CONSTANT CREATE ,
 DOES> @
 ;

instead of as given in the text.

`

Compilation/execution (page 98) gives rise to problems as well, as the Jupiter does not have STATE or [COMPILE]. This does not affect the examples given here, but you will not be able to test the version of ASCII given in Figure 7.1a, nor will you be able to develop such words yourself.

Recursion (page 103) is made very easy: the Jupiter allows a word to refer to itself even if the definition is incomplete. Figure 9.14 therefore becomes -

: FACTORIAL
  DUP 0=
    IF DROP I
      ELSE DUP 1- FACTORIAL *
    THEN
;

Chapter 10

The first of the examples (Figures 10.1 to 10.10) will not run on the Jupiter because of the differences in input methods.