|
De Forth Programmeertaal
Zoals al beschreven in de eerste software pagina:
het lastige van een zelfbouwsysteem was natuurlijk
dat het nergens mee compatible was. Aan de andere hand, veel bruikbare
software was er toen toch nog niet te krijgen, je moest nog veel zelf doen.
Maar, samen met mede-hobbyisten toch heel wat voor elkaar gekregen, waaronder
het werken in Forth.
Hoger
dan assembler: Forth
Mijn eerste (en op zelfbouwsystemen enige) hogere systeem/taal was
Forth. Dit is een hele gebruikersomgeving: het is zowel een
programmeertaal, als een operating systeem, te bedienen in
diezelfde taal. De taal stamt al uit de 60'er jaren,
waar het werd gebruikt voor besturing van bijvoorbeeld radioteloscopen. Ik
ben er op de universiteit in Utrecht mee in aanraking gekomen, waar het
(geïmporteerd door astronomen) op Apple's draaiden, voor experimenten en
besturingen. Het is interactief: op de prompt (typisch
'OK') kan je commando's in Forth invoeren, die dan gelijk
worden uitgevoerd, dus ideaal om experimenten en zo aan te sturen. Je kon ook
nieuwe functies definiëren, die dan werden gecompileerd (vertaald) en
opgeslagen, en later weer als commando konden worden opgeroepen.
Het hele systeem paste in 8 Kbyte, hoewel mijn uitgebreidere versie wat
meer ruimte in beslag legde. Kom daar met Windows maar eens om, maar dat
bestond toen nog niet eens, Windows 1.0 (een grafische schil rond DOS) komt
uit 1985.
Hoe ziet Forth er uit? Wel, een simpel 'hello world' programma (het
standaard eerste demo-programma) ziet er als volgt uit:
: HelloWorld \ een dubbele punt start het maken van een nieuwe
functie
." Hallo, Wereld" \ het commando
." definieert een string en drukt deze af
CR
\ CR is het commando voor het afdrukken
naar een nieuwe regel
;
\ en de ; sluit de nieuwe functie/routine
af
Binnenkort: wat meer programma's in Forth, voor de Forth
geïnteresseerden.
Eerste programma in deze serie: het klassieke breakout spel in Forth.
Nu kent het systeem een nieuw commando, genaamd 'HelloWorld'.
Deze is nu aan te roepen door de naam in te typen:
HelloWorld
Hallo, Wereld
OK
Simpel, nietwaar? Wil je meer weten over hoe Forth er uit ziet, kijk dan
op deze 'Wat is
Forth' pagina. Het voordeel is natuurlijk dat je alles direct uit
kunt proberen, alle functies die je maakt kan je ook gelijk testen, stap voor
stap.
De
Forth gebruikersgroep
Samen met andere leden van de Hobby Computer
Club hebben we toen de Forth
gebruikersgroep opgericht (bestaat nog steeds), en via een zelfgemaakte
Forth cross compiler op een CP/M systeem hebben onder andere Jan Vermue en ik
een Forth versie voor de Eurocom-II gemaakt. Dit was
de basis voor al mijn verdere programmatuur.
Zie hiernaast een foto van de HCCdagen, met de stand van de Forth
Gebruikersgroep, omstreeks 1983). Zittend op de foto o.a. Albert, nog steeds actief
lid.
Het Forth systeem werd al snel uitgebreid met een Disk Operating System
('DOS'), zodat ik files op floppy kon zetten (Forth heeft standaard een meer
primitief disk-systeem, dat geen files maar alleen 1 Kbyte blokken kent).
Gebaseerd op UNIX was dit weer (vergeleken met de toen aanwezige
hobbysystemen) een modern systeem, met directories. Dit zat zelfs nog niet
eens in bijvoorbeeld Microsoft MS/DOS 1, daar kon je maar een directory, met
maximaal 64 files, op een floppy zetten (Windows: wat is dat? We praten hier
over 1983).
Daarnaast moest ik natuurlijk de BIOS aanpassen, deze kon alleen maar
booten (starten) van cassette. Hier was de memory card
met batterij-backup handig: hierin kon ik mijn met de hand geschreven
boot code voor floppy kwijt, zonder deze steeds opnieuw van cassette te
moeten lezen. Een kleine wijziging in de ingebouwde BIOS maakte dat deze in
de memory card keek naar uitbreidingen (zoiets als huidige BIOS'en in PC's
ook doen), en deze uitbreiding vroeg dan van welke floppy te booten (zie
scherm hierboven, uit 1986). Gelijk die bootcode ook maar mijn toenmalige
logo op het scherm laten zetten.
En: het werkt allemaal nog steeds. Onlangs de zaak weer eens op verzoek
uit de kast gehaald en aangezet: de inhoud van het geheugen was er nog, en de
5¼" floppies uit 1986 waren nog steeds leesbaar: het systeem startte
op (niet echt in een keer, denk dat er wat vuile contacten waren, moest de
kaarten er een paar keer uithalen en er weer instoppen). En dat na jaren niet
gebruikt te zijn!
Applicaties
Niet alleen het operating system is
zelfgemaakt, maar ook veel applicaties (meestal dus in Forth). Zowel nuttige
programma's als een simpele tekstverwerker (met printer driver, en zelf
ontworpen fonts, om op een oude matrix-printer toch 'near-letter quality' te
kunnen afdrukken), en spelletjes zoals breakout,
space invaders, snakes, en zo voort.
Het leukste waren wel robotjes. Hiermee stonden we dan met de Forth gebruikersgroep op de HCC-dagen, en
hebben we zelfs een prijs gewonnen voor de mooiste presentatie. Ik had wel de
helft van de planten uit het huis van mijn ouders meegesmokkeld om de stand
mooi aan te kleden.
Daarnaast probeerde ik van alles uit (kan mooi met Forth), zoals
'non-deterministische control structures', multi-tasking, compilers (zoals
een Tiny-Pascal compiler die naar Forth vertaalde) en andere zaken die ik
tijdens college leerde. Ik had zelfs al een simpel multi-user systeem, zoals
gedemonstreerd op de HCC-dagen van 1984. Weer prijs (zie hiernaast)!
Tegenwoordig is dit allemaal iets dat als vanzelfsprekend wordt
aangenomen. Wie maakt er nog zelf computers, of zelf de low-level software.
Niet erg veel mensen meer, in de meeste operating systems als Linux en
Windows zit alles al wat je als gebruiker nodig hebt (bij Linux toch dank zij
een boel mensen die dit nog steeds als hobby hebben). En met de steeds
complexere systemen gaat er ook te veel tijd in zitten om alles zelf te doen.
Toch is dat soms jammer, ik heb er veel van geleerd.
Forth
Processors
Later (1984-1986) zijn we met een groepje zelfs onze eigen Forth processor
gaan ontwerpen. Forth wordt normaal gecompileerd naar een soort intermediate
code, en het idee was een processor te maken dat deze intermediate code
direct uit kon voeren, en zo Forth programma's vele malen sneller zou kunnen
draaien.
Met een groepje (Albert, A3, Pieter, Arie en
ik) hebben we dat idee op papier uitgewerkt, tot de FIETS
processor. FIETS stond voor Future-oriented Implementation
of Enhanced Translators and Systems, en we hadden ook
goede plannen om bijvoorbeeld C en Pascal op deze machine te laten draaien,
maar de native language (moedertaal) zou Forth zijn. Zie de voorkant van ons
data sheet hiernaast.
Helaas, alhoewel we een behoorlijk uitgebreid ontwerp hadden, en er heel
wat vergaderingen aan hebben besteed, is er nooit een hardware implementatie
gemaakt, alleen maar emulatie-software. FPGA's waren er toen nog niet (past
het tegenwoordig zonder problemen in, zie hier), en de processor zou uit zo'n 100
TTL chips opgebouwd moeten worden.
Wel ben ik via mijn toenmalige baan wel (rond 1990?)
met echte Forth processoren in aanraking gekomen, we waren vertegenwoordiger
van de Novix NC4000 Forth Engine. Aardig in de richting van wat we toen zelf
wilden maken. Heb er nog steeds een paar liggen. Maar, tegen Intel konden
niet veel processor-fabrikanten op...
En
Nu?
Wel, ik programmeer niet meer in Forth, de taal is me wat te
minimalistisch en huidige systemen hebben genoeg kracht om zwaardere talen
aan te kunnen. Maar, ik ben wel via Forth mijn verdere carrière
ingerold. Via kennissen bij de hobby computer club werd mijn interesse
opgewekt bij een bedrijf (Pijnenburg micro-electronics), waar ik als Forth
programmeur ben gaan werken (part-time, naast het afmaken van mijn studie),
en van daaruit zelfs gewerkt in bijvoorbeeld Japan. Daar, en als
hobbyist, ben ik ook doorgegaan met processor-ontwerp, en nu help ik
DSP's (digitale signaal processoren) ontwikkelen bij ST NXP Wireless
(spin-out van Philips/NXP)... Programmeren gaat nu voornamelijk in C en in Perl.
En, ik heb mijn oude systeem nog steeds, en het werkt ook nog (2006)! En,
ik hobby ook nog, waarvan deze site getuigt!
Forth leeft ook nog steeds, en wordt nog steeds gebruikt waar het
oorspronkelijk voor is ontwikkeld: het besturen van systemen. In de space
shuttle, maar ook nog steeds door hobbyisten, kijk op deze pagina met
robotjes van de Forth
GG.
|