EuroForth '98 Conference Report

Paul E. Bennett

Getting there.

This year my son Jason and myself were to be traveling companions. Jason is a fairly typical 7 year-old with definite likes and dislikes. Introducing him to new food ideas was going to be an interesting challenge. We flew from Bristol Lulsgate Airport on the first leg of our Journey, Brussels and the delights of Belgium. The idea was to look up a few friends from my time at Europay and to do a bit of sightseeing (mainly Brussels and Waterloo).

During our few, albeit wet and windy days, we managed the see the attractions of the Atomium (a very large model of an iron atom), Autoworld (a historical car museum), the squares and statutes of Brussels (including it's most famous - The Mannekin Pis). In Waterloo, or rather more South near Braine L'Allieu, we steeped ourselves in the history of 1815 - the Battle of Waterloo.

On the Thursday, we left Waterloo for Brussels and thence to Luxembourg. I had planned a stop-over for few hours as a break from a train journey of over 6 hours. We walked round for a while then spotted a touring Dotto which had a recorded presentation explaining the history of Luxembourg (well worth the fare if you only have a short while). It seems that Luxembourg was built up and destroyed several times over during it's more than 1000 year history.

Finally, we boarded our next train for Trier, getting into a discussion on programming with two Spaniards and an Englishman. Naturally, yours truly espoused the benefits of programming in Forth. At Trier, just time for a quick refreshment then on to Saarbruken by the next train. At Saarbruken we took the train to Turkismuhle (which turned out to be two with a change at Saint Wendell) and then a taxi to Schloss Dagstuhl (near Wadern).

The Venue - Schloss Dagstuhl

Schloss Dagstuhl or Dagstuhl manor house was built in 1760 by the then reigning prince Count Anton von Öttingen-Soetern-Hohenbaldern. After the French Revolution and occupation by the French in 1794, Dagstuhl was temporarily in the possession of a Lorraine ironworks. In 1806 the manor house along with the accompanying lands was purchased by the French Baron Wilhelm de Lasalle von Louisenthal. In 1959 the House of Lasalle von Louisenthal died out, at which time the manor house was then taken over by an order of Franciscan nuns, who set up an old-age home there. In 1989 the Saarland government purchased the manor house for the purpose of setting up the International Conference and Research Center for Computer Science. The first seminar in Dagstuhl took place in August of 1990. Every year approximately 2,000 research scientists from all over the world attend the 30-35 Dagstuhl Seminars and an equal number of other events hosted at the center.

Internationalisation Workshop

The Internationalisation (i18n) Workshop preceded the main conference, occupying the Friday Morning. The need for this was the result of the ANS to ISO Fast-Track vote when the European Forth Community declared a need for internationalisation issues to be considered in the amendments to the ANS document. I18n issues cover not only language and cultural aspects but also time and date formatting. There was a concern that any effort in i18n should not break existing code. This ruled out changing the character access words C@, C!, CMOVE and COUNT. This led to the proposal that a new Internationalisation Wordset be created. Some of the discussion related to the adequacy or otherwise of UNICODE characters. Whilst it is true that the commercially most significant languages are catered for, there are still a number of languages and character sets that are not. Many of these are variable length characters. The workshop ended by agreeing the basic wording of a proposal to the ANS Technical Committee.

There is an Internet mailing list which is in operation to continue discussion of the specific proposals and anyone who needs to make their views known on this issue should join the discussion. This is run by Anton Ertl and you can subscribe by email to:-

The Conference

The conference proper began in the afternoon. The first session was on Forth Philosophy and Standardisation and was kicked off with a paper by M.L. Gassanenko but presented by Sergei Baranof. Russia and its economic problems meant that Sergei’s ticket had to be organised from outside Russia, leaving Sergei to represent Russia in it’s entirety (or as much as he was able). The subject of the first paper was "Context Oriented Programming".

Egmont Woitzel then gave us "Transient and Context Controlled Scopes". This compared the state-driven method and prefix driven methods. In the state-driven method, the search order is made implicit by state transitions. In prefix driven methods there needs to be a consideration of the search order as it is effected by the modularity strategy, parse strategy and the transient scope strategy. The paper identified the need for improvements in interface and naming conventions and source code management. Header suppression was seen as a complicating matter for maintenance and debugging. The audience felt that this was more about scoping control for personal use rather than wider area of usage.

Peter Knaggs then took the floor to explain the structure and form of the continuing ANS (and subsequently ISO) standardisation efforts. It seems that Forth was the first "extensible" language to be standardised. He briefly covered Forth’s problem (extensibility) and a solution to gaining standardisation via an open pre-standardisation review. This revolved around gaining a wide review audience for new words and wordlists proposed for standardisation. There is therefore a new procedure proposed which is under consideration by the Technical Committee (TC).

Peter then went on to inform us about the changes in ANS committee structures. The ANS Technical Committees are now ITI Technical Committees (even though the standards publications remain ANS). NCITS (which was the X3 secretariat) now incorporates J14 (the Forth Sub-Committee). The result of all this is that the committee has a new designation and is now known as NCITS/J14.

The first ANS standard was "Fast-Tracked" to an ISO standard and ANS have the responsibility for its maintenance. However, when the ISO standard was issued, there was a proviso that the Internationalisation Issues be looked at for the next revision. The ANS standard is now up for revision and the following changes are expected to be made.

  1. All words marked as obsolescent in the current standard to be deleted.

  2. Ratification of all clarifications issued in response to the 9 requests already answered and the 2 requests that remain outstanding.

  3. Support for Embedded and ROMable Systems.

  4. Support for Internationalisation and Extended Character Sets.
Items (c) and (d) are, of course, both demands from the ISO fast track process.

Updating the ANS standard planed as a 2 year process.

Anyone can join the TC if the fulfill the membership criteria. This includes paying $300 per year and attending the first two meetings (in the USA) and two thirds of all meetings. You also have to vote in more than 80% of all letter (email) ballots. Meetings are in July and November.

The NCITS/J14 committee can set up task groups to look at specific items and produce a report. Membership to this is open to anyone for $300 per year (TC members get on for free).

Finally, it was proposed that a public notice board be established as part of the NCITS/J14 web site:-

This would enable announcements and posting of the new proposed words and wordsets to be aired for comment.

[This is now up and running at:-

Johnathon Morrish of Micros Engineering managed to do a paperless paper on the PIC entitled "Spiders and Forth". This featured the device in various sizes of configuration and packaging and mentioned some real applications (including one involving "Cats-Eyes" - the devices that divide the lanes on UK roads). Nick Nelson, of the same company, also did a paperless paper "A Grid Control in Forth" which dealt with graphical objects in windows environments. Reuben Thomas expounded on "Mite: a Fast and Flexible Virtual Machine" while Sergei Baranof covered again for M.L. Gassanenko and presented "Open Interpreter: Portability of Return Stack Manipulations".

Within session 4, on old and new words, Anton Ertl attacked state smart words and proposed some interesting solutions, comparing with various other system implementations in the process. We also had Michael Milendorf talking about the proper use of CATCH and THROW and Manfred Mahlow and Klaus Schleisiek spoke about PRELUDE and FINALE, context switching words which apply limited pre and post execution facilities.

The final session kicked off with the double act of Paul Bennett and Malcolm Bugler relating the experience gained in applying Software Certification to a Forth based Medical "Life-Support" product. The fact that such certification was considered late in the project and was completed in three weeks was part due to the use of Forth and the effort and dedication of Paul’s team of code reviewers. The certification documentation was accepted by the notified body who were evaluating the product for CE marking under the Medical Devices Directive and further work towards FDA approval. The process did identify some serious flaws in the code which were put right by the authors prior to the CE marking evaluation and recertified. Bernd Paysan presented another astounding demonstration of MINOS and the way 3-D graphics could be integrated. The final paper of the conference was presented by Stephen Pelc who presented a "Portable Forth Optimising native Code Compiler".

The Conference Circuit

EuroForth is settling down to a three year cycle. The cycle has a year in the UK (various locations) a year in Germany (mostly at Schloss Dagstuhl) and a year in a guest country. As the 1997 conference was in Oxford, England, and this year was at Schloss Dagstuhl, next year is the turn of a guest country. St. Petersburg has been proposed for 1999 with Vienna in reserve [Actuarly Dagstuhl is the reserve]. A final decision will be made in February 1999. This leads to the venue being back in the UK for the year 2000 and as this is going to be a significant year for locations meridian, the organisers have decided to pursue the possibilities that might be afforded by Cambridge.

In conjunction with the above, it was also decided that a EuroForth mailing list be established to assist in the organisation (by email) of future conferences and open discussion of conference topics. An announcement has been made in the newsgroups and by email to this years participants already. For others wishing to subscribe an email to <> will get you on. An archive of the mailing list will be available from:-

All this is, of course, linked from Peter Knaggs Forth pages at:-

Impromptu Papers

Malcolm Bugler - EPP the forgotten standard
Discussed, probably the most useful port on the PC, the parallel port. Having presented a little history, Malcolm then went on to espouse the merits of using the port. He also displayed some code for interfacing to the port in EPP mode.

Klaus Schleisig - Time Service Wordset
A quick run though the words Klaus uses to handle time:
create ticks   \ 16- or 32-bit
\ incremented every 5 ... 10 ... 25 microseconds by an interrupt routine

: after ( #tick -- ticktime )
  ticks @ +

: timeout? ( ticktime -- ticktime flag )
  dup ticks @ - 0<

: continue ( ticktime -- )

: sleep ( #ticks -- )
  after continue

: second ( seconds -- #ticks )
  &100 *

: ms ( #msec -- #ticks )
  &10 /

Reuben Thomas - Demi Doubles
A short exploration of double cell values and words that utilise them.

Klaus Schleisig - Uses of other ASCII codes
Really a request for opinions on the standard uses of some of the ASCII punctuations. He was looking for one or two characters for which there was not an already common usage.

# Decimal Literal (#12) and Constant word prefix
&Decimal Literal (&12)
$ Hex Literal ($0C) and String word prefix
~ Super-comment (until next ~)
{ Local Variable definitions
} Local Variable definitions
| Headerless definition
^ unused!
% Binary Literal (%1100)
` Character Literal (`A same as [CHAR] A)
" String Literal ("Text")
_ Instead of capitalisation in Names

Peter Knaggs - Journal of Forth Application and Research (JFAR) Status
This report on the current status of the JFAR publication was an update of the report given at last years conference. Peter has now managed to install himself in the position of editor and has begun to publish accepted papers on the web. There are plans to print paper copies of the material when enough are collected to make it worthwhile, and to also publish the collected papers on CD also. The back-issue paper publications will be fully indexed on-line and may also be included on CD when they are scanned in. The web sites are at:- site) mirror)

Howerd Oakford - Angles, Trig and Complex numbers
Mainly a plea for help. Howerd expounded the problems he was having considering the more complex maths involved in resolving trigonometric calculations from a complex number input. He felt that keeping the complexors as a pair of cells made sense until the last possible moment before usage. Several offers were made to share code with him.

The Conference Workshops

There were three workshop stream topics this year.

Methods and Objects
This workshop reported that there now seems to be a convergence of ideas and techniques amongst those who are Object Oriented wordsets. It seems like a bit more discussion and work may actually get a concensus on this subject. We may even be ale to look forward to an OO wordset being proposed for consideration by NCITS/J14.

[Bernd Paysan has developed a 12 line ANS Forth implementation of the proposed syntax. See his description for more information:-

Project Management
This discussion centred on three aspects.

Project Start
Which identified customers as belonging to two types. Those with and those without a specification. This seemed to imply that each type would be best served by different system development models, these being "waterfall" and "spiral" respectively. It was agreed that the waterfall model of development had been written up and explained often enough to be clear to everyone. However, there seemed to be scant information on the spiral model and it was only alluded to in many reference books without being fully described in project terms.

For a spiral development model, it was agreed that risk assessment, awareness of the customers overall business goals and early review of applicable standards and legislation. The client contact needs to be offered the means to "buy-in" to a proposal in order to sell it to the rest of his company. It was also identified as important to do a "post-mortem" on each and every project to see if there are lessons to be learnt.

Identified a need for good support tools for version management, problem reporting and tracking and, in essence, good configuration management. Reviews seen as necessary to ensure compliance of code to "house" coding and documentation styles, technical integrity of the product and general quality. A reminder was issued that documentation errors are also bugs and English documentation is needed with the code to explain the code to non-programmers who may be part of the review team.

Group Working
Even in Forth, programmers are working in teams. This requires that the project is properly structured mainly in step with the structure of the product. This helps in team management and provides stronger componentisation.

Virtual Machines
Since Forth is frequently implemented using a virtual stack machine, the available implementation techniques have been studied in some detail over the years. This workshop showed, however, that a number of new questions are being raised in this area. These involve the deployment of Forth virtual machines in complex environments involving windows and networking, and in particular we discussed issues raised by client server programming.

Could a stack based virtual machine be a basis for just in time compilation? It was noted that advanced optimisation techniques for converting Forth into native code are being implemented in the latest MPE Forth Compilers. Similar techniques could be used for JIT conversion from token or threaded code. Current Work from on both stack and register based virtual machines was discussed. It was noted that Forth, unlike Java, retains a trap door to the underlying physical machine through the ability to add code definitions. This allows it to be very effectively tuned to particular applications.

Functionality and Portability
The virtual machine needs extending to provide access to GUI toolkits (e.g. TK) and communication technologies (e.g. TCP/IP) at an appropriate level of abstraction.

Client Server Deployment
Forth will perform well in a client server environment. particularly where extended functionality is required. Distributed functionality can be obtained by communicating Forth source test between nodes, possibly in tokenised form. Security issues would need to be investigated.

The Competition

It has long been a tradition at Forth conferences to have a fun competition (which may or may not include coding). This year it was decided that we should relate Forth to every day life. The task was to write some code that must be:

  1. Readable
  2. Portable
  3. Maintainable

The participants had to work with a well known phrase containing three previously defined Forth words and three undefined words. The participants had to provide:

  1. name for the definition
  2. Stack comment
  3. A description
  4. Definitions for undefined words

The well known phrase that was provided a starter was:-


As is usual with this kind of competition extra points were obtainable for imaginative use of commas and all attempts to influence the judges are naturally gratefully received.

Sadly not many entries made it by the deadline. The entered codings were all highly amusing, despite some entrants displaying the fact that they had not fully understood the specifications. After due deliberation by the contest judging panel, Paul Bruin won through to receive the coveted "Fat Cigar" award, a prize deemed fitting the content of the competition.

One entry that arrived by email, but which did not receive a prize was from a Mr. W. Clinton, of Little Rock, Arkansas:

DEFER DRUGS          \ n -- ; context sensitive

: BILL'S_DRUGS       \ n -- ; attitude

: SEX                \ -- u; none of your business

: ROCK               \ --

: LIFE               \ attitude -- report

Though this was considered useable as a model, it had some serious problems in the coding (obviously not tested). Another entry, which unfortunately arrived too late for inclusion, but which did work well, was by Malcolm Bugler. This entry is not included in this report but may be available for download from the EuroForth web-site with the electronic version of this report.

Michael Milendorf gave us:-

HEX      \ A      hex value
         \ BABE   hex value
         \ FACE   hex value

     FIND IF
            PICK BABE , EMIT WORDS ,
            DO ROCK AND ROLL LOOP ,
            DO DRUGS LOOP ,
               FORGET WORDS

: ROCK ( -- )
        MOVE AND ROLL !
        DUMP AND THROW !

: DRUGS ( -- )

This, it was felt by the judges, had missed some of the essence of the competition rules. However, the winning entry presented below had more merit and was accepted in the obvious spirit of universal harmony that it displayed (or perhaps the author likes having sex with aliens).

1 CONSTANT XY    \ Male object (constant is best used)
0 CONSTANT YY    \ Female object (variable may be better)

: WAY2LIVE  ( no_fixed_address\XY\YY -- )
 \ Forth proposal for a better ANS standard (of living)
 \ Note: ANS = another non-standard standard
   SEX,           \ Having fun without spawning child processes
   DRUGS,         \ an unconventional (u14l) technique
   ROCK           \ sorting and fine-tuning
   AND            \ consolidation of resources
   ROLL           \ prioritising your life
   !              \ and keeping the results

: SEX   ( nfa\XY\YY --nfa\XY )
  \ Having fun without spawning child processes
   2 PICK @       \ if there's anyone at home....
   IF 1 PICK 0    \ we'll try and pick her up
      ?DO         \ then check if she does!
         OVER     \ if successful, do it over..
         OVER     \ and over again (if possible)
         +        \ add it all together
         IF       \ if we got a result
           LEAVE  \ ... we'll make a fast exit
   DROP        \ if she's still around at this stage, we'll drop her

: DRUGS,  ( nfa\XY --- NFA\YX )
  \ trying to scramble/unscramble the data
   OVER >R     \ hold on to the important stuff...
   R@ !        \ before we change the current state
   R@  W@      \ if we aren't completely fulfilled...
   R@ 2+ W@    \ we should try all our options
   SWAP        \ now we must priorotise things
   R@ W!       \ try to hide some stash here
   R@ 2+ W!    \ ..and hide the rest over here
   R> @        \ finally, we try to find ourselves

: ROCK  (nfa\YX --- nfa\XY\XY\XY )
   \ sort, stabilise and fine-tune the data
   DRUGS,      \ start off with some more of this
   1 PICK      \ now try some string manipulation (m12n)
   OVER 4*     \ use some clever cellular tricks
   ERASE       \ and prepare our bass (sorry, should be base)
   DUP         \ first make a back-up copy....
   DUP         \ before making a master copy
Obviously you need to use the backwards loader to get this one into the computer as it was written top-down fashion.

Other Prizes

Other prizes were awarded for the best papers and presentation, and a "best dressed for dinner" prize.

The Survivors Party

After dinner, Malcolm Bugler organised us into teams of four, passed round the words of a song and tasked us to perform it as a Barbershop quartet. After a little practice, the teams gave their, often amusing, renditions. There followed a few more impromptu songs and plenty more boozing.

[ Forth | euroFORTH | euroFORTH '98 | Conference Report ]