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).
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:-
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 Forths 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.
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 Pauls 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".
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 <euroforth-subscribe@egroups.com> 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:-
create ticks \ 16- or 32-bit \ incremented every 5 ... 10 ... 25 microseconds by an interrupt routine : after ( #tick -- ticktime ) ticks @ + ; : timeout? ( ticktime -- ticktime flag ) pause dup ticks @ - 0< ; : continue ( ticktime -- ) BEGIN timeout? UNTIL drop ; : sleep ( #ticks -- ) after continue ; : second ( seconds -- #ticks ) &100 * ; : ms ( #msec -- #ticks ) &10 / ;
# | 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 |
emptyBuffer | |
empty_buffer | |
empty-buffer |
http://www.jfar.org/index.html | (official site) |
http://dec.bournemouth.ac.uk/forth/jfar/index.html | (European mirror) |
[Bernd Paysan has developed a 12 line ANS Forth implementation of the proposed syntax. See his description for more information:-
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.
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:
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:
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.DEFER DRUGS \ n -- ; context sensitive : BILL'S_DRUGS \ n -- ; attitude INHALE? NOT ME! THROW ; : SEX \ -- u; none of your business PRIVACY CONTEXT ! JOURNALIST @ EXECUTE MONICA @ ; : ROCK \ -- SHAKE RATTLE ROLL ; : LIFE \ attitude -- report IS DRUGS BEGIN SEX DRUGS ROCK AND TERM TIME-OUT? UNTIL ROLL OVER ; BILL'S_DRUGS LIFE
Michael Milendorf gave us:-
HEX \ A hex value \ BABE hex value \ FACE hex value : SEX ( -- ) RECURSIVE SEARCH A BABE FIND IF SEE FACE AND EVALUATE , PICK BABE , EMIT WORDS , DO ROCK AND ROLL LOOP , DO DRUGS LOOP , BEGIN FORGET WORDS MOVE AND ROLL WITHIN OPEN SPACE THROW UNTIL ELSE SEX THEN ; : ROCK ( -- ) BEGIN MOVE AND ROLL ! DUMP AND THROW ! DROP UNTIL ; : DRUGS ( -- ) BOTTLE PICK AND OPEN BEGIN REFILL GLASS DRUNK UNTIL BOTTLE DUMP ;
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).
Obviously you need to use the backwards loader to get this one into the computer as it was written top-down fashion.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 THEN LOOP THEN 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 ;