www.jupiter-ace.co.uk

News, Reviews and Letters Index > Ace Review from Radio Bulletin October 1883


Radio Bulletin oktober 1983 page 425
Jupiter Ace
Gestructureerd programmeren voor
iedereen

W. A. Huntjens
De laatste tijd verschijnen er aan het computerfirmament steeds meer kleine sterretjes die vriendelijk knipogen naar de financieel niet al te draagkrachtige amateur. De ZX80 was de eerste: een eenvoudige behuizing, een mini-
mum aan onderdelen en een uitermate primitief toetsen-bord. Desalniettemin een echte computer, waar heel veel mensen een hoop plezier aan hebben beleefd. Later kwa-men de ZX81, de ZX-Spectrum, de VIC20, de Dragon, de Oric-1, ieder met hun eigen mogelijkheden en helaas ook beperkingen. Tenslotte moet er ergens op worden bezui-nigd.
Een buitenbeentje in deze groep is de Jupiter Ace, die niet in Basic, maar in Forth wenst te worden geprogrammeerd. Waarom juist Forth en niet bijvoorbeeld Pascal? Omdat Forth, naast Basic, de enige programmeertaal is die met een minimum aan hardware en vooral geheugen kan worden gerealiseerd èn omdat Forth buitengewoon flexibel is en een veel duidelijker structuur in de programma's toelaat dan Basic.


Radio Bulletin oktober 1983 page 426
Laten we ter verduidelijking eens een Basic-programma en iets ge-lijkwaardigs in Forth naast elkaar zetten.
10 REM TELLEN   : TELLEN
20 LET A= 1      1
30 PRINT A ;     BEGIN 
40 LET A=A+1      Dup . 1+
50 IF A>100       DUP 100 >
   THEN END
60 GOTO 30      UNTIL ;
Beide programma's zullen de getal-len van 1 tot en met 100 op het beeldscherm zetten. In Forth wor-den hier geen variabelen gebruikt. Het getal 1 wordt op de stack gezet (dat is een stapelgeheugen; gebrui-kers van HP-calculators kennen dat wel). Het Forth-woord DUP du-pliceert het getal op de stack, wat nodig is omdat het Forth-woord ,,."
(gewoon een punt dus) één getal van de stack verwijdert en dat op het scherm zet. Het woord „1+"
telt 1 op bij het eerste getal op de
stack en dan wordt bekeken of het resultaat al groter is dan 100. Totdat (UNTIL) dat het geval is, wordt vanaf het woord „BEGIN" alles herhaald.
Enkele verschillen met Basic zul-len nu duidelijk zijn:
  1. Forth heeft geen regelnummers en kent dus ook geen GOTO-statement. In plaats daarvan worden de structuren BEGIN ... UNTIL óf BEGIN ... WHILE ... REPEAT óf DO ... LOOP gebruikt.
  2. In Forth wordt een nogal intensief gebruik gemaakt van het stapelgeheugen. De consequentie daarvan is wel dat al het rekenwerk plaats vindt in RPN, de omgekeerde Poolse notatie. Dus 3 * (4 + 5) wordt in Forth 4 5 + 3 *. Behalve het woord „DUP" zijn er nog een aantal andere woorden („SWAP", „DROP", „OVER", „PICK", „ROT" en „ROLL") waarmee waarden op de stack kunnen worden gemanipuleerd. Gebruik van variabelen is echter ook mogelijk, zelfs met lange namen voor variabelen.
En nu het belangrijkste verschil. Het woord „TELLEN" in het voorgaande Basic-programma heeft geen echte functie: het is bedoeld als geheugensteuntje voor de programmeur. In Forth is dat anders: het woord „TELLEN" was natuurlijk geen origineel Forth-woord, maar door de computer wordt het, nadat het
bovenstaande is ingetypt, wel als zodanig beschouwd. Het woord kan dan op zichzelf, als programma, worden gebruikt (intypen van „TELLEN ENTER " geeft op het beeldscherm de getallen van 1 tot en met 100), maar het kan ook in een ander woord worden verwerkt. Een voorbeeld:
: DEMONSTRATIE
CLS ." Ik kan tellen !"
CR TELLEN CR
." Goed he ?" ;

Het woord „CR" voert op het beeldscherm een Carriage Return uit; de rest zal wel duidelijk zijn. Dit nieuwe woord „DEMONSTRATIE" kan op zijn beurt weer worden gebruikt in een ander woord enzovoort.
Een Forth-programmeur kan op deze wijze de woordenschat van zijn taal zelf uitbreiden door allerlei nieuwe woorden te definiëren, die hij voor bepaalde toepassingen denkt nodig te hebben. Door aan die woorden duidelijke namen te geven, kan een programma ook zonder toelichtende verklaringen overzichtelijk worden gemaakt. De door ons zelf gedefinieerde woorden lijken een beetje op de procedures in Pascal. Het verschil is, dat in Forth de parameters meestal worden doorgegeven via de stack. Bovendien is er in Forth geen echt hoofdprogramma. De naam daarvan zou immers ook weer in een ander woord kunnen worden gebruikt. Dat is dan ook de reden, waarom men in Forth eigenlijk
 
Table 1
!
#
#>
#S
(
*
*/
*/MOD
+
+ LOOP
,
-
.
."
/
/MOD
0<
0=
0>
1+
1-
2+
2-
:
;
<
<#
=
>
>R
?DUP
@
ABORT
ABS
ALLOT
AND
ASCII
AT
BASE
BEEP
BEGIN
BLOAD naam
BSAVE naam
BVERIFY naam
C!
C,
C@
CALL
CLS
COMPILER
CONSTANT naam
CONTEXT
CONVERT
CR
CREATE naam
CURRENT
D+
D<
DECIMAL
DEFINER
DEFINITIONS
DNEGATE
DO
DOES>
DROP
DUP
EDIT naam
ELSE
EMIT
EXECUTE
EXIT
F*
F+
F-
F.
F/
FAST
FIND
FNEGATE
FORGET naam
FORTH
HERE
HOLD
I
I'
IF
IMMEDIATE
IN
INKEY
INT
INVIS
J
LEAVE
LINE
LIST naam
LITERAL
LOAD naam
LOOP
MAX
MIN
MOD
NEGATE
NUMBER
OR
OUT
OVER
PAD
PICK
PLOT
QUERY
QUIT
R>
REDEFINE naam
REPEAT
RETYPE
ROLL
ROT
RUNS>
SAVE naam
SIGN
SLOW
SPACE
SPACES
SWAP
THAN
TYPE
U*
U.
U/MOD
U<
UFLOAT
UNTIL
VARIABLE naam
VERIFY naam
VIS
VLIST
VOCABULARY
WHILE
WORD tekst
XOR
[
]

Radio Bulletin oktober 1983 page 427
niet van een „programma" kan spreken. Gemakshalve hebben we het af en toe toch gedaan.
Forth biedt nog meer interessante mogelijkheden, zoals het zelf definiëren van nieuwe typen variabelen, arrays en strings, maar het wordt tijd dat we terugkeren naar ons uitgangspunt.

De Jupiter Ace wordt geleverd in een witte plastic behuizing, waarop 40 rubbertoetsen prijken. De afmetingen zijn 21,5 x 19 x maximaal 3 cm. Het toetsenbord lijkt sprekend op dat van de ZX-Spectrum (toeval?), het voelt net zo aan en er kleven dezelfde bezwaren aan. Onder iedere toets zit een rond schijfje van geleidend rubber. Daaronder ligt de print waartegen het rubber, tijdens het intoetsen, contact maakt. Veel rekenmachines werken volgens dezelfde methode. Die geleidende schijfjes zijn, met een doorsnede van 5 mm, gewoon te klein. Het gaat allemaal goed zolang de toets rechtstandig wordt ingedrukt. Bij snel typen kan het voorkomen, dat de toetsen kantelen. Dan raakt de isolerende zijkant van de toets de print en er gebeurt niets. Rustig typen en goed kijken, luidt het motto.
Op de print bevinden zich 28 IC's met als trots middelpunt de Z80A, die met een kloksnelheid van 3,28 MHz werkt. Dit gevoegd bij het feit dat Forth de woorden compileert, resulteert in een indrukwekkende snelheid. Een „lege" lus die 10000 keer wordt doorlopen ( : TEST 10001 1 DO LOOP ; ) heeft daarvoor op de Jupiter Ace 1,3 seconden nodig. Het overeenkomstige Basic-programma (10 FOR X%= 1 TO 10000 : NEXT X%) houdt de TRS80 ongeveer 17 seconden bezig.
De Forth-compiler bevindt zich in twee EPROM's van 4K. Het RAM-geheugen is nogal krap bemeten: 3K, waarvan na aftrek van de systeemvariabelen en het beeldscherm- en karaktergeheugen ongeveer 900 bytes voor de gebruiker overblijven. Om de gedachten even te bepalen: het woord TELLEN neemt in het geheugen 39 bytes in beslag. Vooral in toepassingen met veel tekst zal het einde dus spoedig in zicht zijn. Uitbreiding tot 16 of 32K is met behulp van een opsteek-module mogelijk.
Het zwart-witvideosignaal wordt
via een rf-modulator naar buiten gevoerd. De beeldkwaliteit kan heel goed zijn, maar dat is in verregaande mate afhankelijk van het gebruikte TV-toestel. Een monitor-aansluiting is niet aanwezig, maar kan gemakkelijk worden gemaakt door de ingang van de rf-modulator „af te tappen". Het beeldscherm is in 23 regels van ieder 32 karakters ingedeeld; de 24e regel is de ingangsbuffer. Er zijn kapitale letters en onderkastletters. Geïnverteerde weergave (zwart op een witte achtergrond) is ook mogelijk. Omdat ieder teken een 8 x 8-matrix beslaat die door de gebruiker zelf (her)definieerbaar is (het karaktergeheugen staat immers in RAM), zijn op beperkte schaal tekeningen mogelijk met een oplossend vermogen van 256 x 184 punten. Een andere grafische mogelijkheid werkt met 64 x 46 blokjes, die met het woord „PLOT" kunnen worden aan- of uitgezet. Naar behoeven kunnen daar natuurlijk andere woorden worden bijgemaakt. Zo zou men de woorden NOORD, ZUID, OOST en WEST kunnen definiëren, om op het beeldscherm over een bepaalde afstand lijnen te trekken in de aangegeven richtingen. Het programma voor een rechthoek wordt dan:
15 10 30 OOST 20 NOORD
30 WEST 20 ZUID
De twee eerste getallen geven het startpunt aan. Deze grafiek werkt erg snel: een lijn staat vrijwel ogenblikkelijk op het scherm. Tekst en grafieken kunnen door elkaar worden gebruikt.
Geluiden van iedere gewenste lengte en toonhoogte kunnen worden voortgebracht met „BEEP". Het ingebouwde „luid"-sprekertje is alleen in een stille kamer goed hoorbaar. In principe werkt de Jupiter Ace met integers: gehele getallen van –32768 tot en met 32767. De mogelijkheid om met floatingpoint-getallen of met integers van 32 bit te rekenen is echter aanwezig.
Er is een full-screen-editor, waarmee na enige gewenning comfortabel kan worden gewerkt. Omdat er maar 40 toetsen zijn (26 letters, 10 cijfers, tweemaal shift, spatie en enter), kunnen de resterende symbolen en functies alleen via één van de twee shifttoetsen worden bereikt. Alle toetsen hebben autorepeat
(automatische herhalingsfunctie). De cassette-interface gaf ondanks de hoge transmissiesnelheid van 1500 baud geen problemen. De documentatie, die bestaat uit een boekwerk van 181 pagina's, laat maar één ding te wensen over: een Nederlandse vertaling. Het is een duidelijke, goed geschreven handleiding met talrijke instructieve voorbeelden, waarmee de beginner stap voor stap wordt ingewijd in de geheimen van Forth (tabel 1 geeft de aanwezige commando's weer). De uitbreidingsmogelijkheden beperken zich tot de 16 of 32K RAM-modulen; een printerinterf ace is in het vooruitzicht gesteld. Volgens de handleiding is het mogelijk diverse uitbreidingen die voor het ZX81 van Sinclair in de handel zijn, te gebruiken op de Jupiter Ace. Zonder meer gaat dat niet: de aansluitpunten achter op de print zijn wel dezelfde als die op de ZX81, maar ze liggen in een andere volgorde.

De Jupiter Ace wordt geleverd met een losse netvoeding, kabels voor TV en cassetterecorder, het reeds genoemde handboek en een demonstratiecassette met vijf programma's. Heel aardig is de „stack-demonstration", die met behulp van de hoog-oplossende grafiek op het beeldscherm precies laat zien, wat rekenkundige bewerkingen en andere Forth-woorden met de stack doen.

Conclusie
Een echte „volkscomputer" zal de Jupiter Ace nooit worden: er kan niet mee in kleur worden gewerkt en kant en klare programmatuur ontbreekt vooralsnog. Maar voor de echte hobbyist, die graag zelf zijn programma's maakt en soms het gevoel heeft, dat hij zo langzamerhand is uitgestoeid met Basic, biedt dit apparaat een bijzonder aantrekkelijk alternatief.