Forth

As you might expect by now, I am a member of the Forth gg (dutch for Forth user group). We are very active with robotics and hardware control. Yes, that is the user group that has won the most awards over the last 14 years at the dutch computer fair "HCC dagen". Fall 1995 we won the second prize with a kind of monkey climbing along a cable, a fully autonomous robot exhibiting a diversity of behaviours. That was a creation of Willem Ouwerkerk, now a famous artist robot builder.
At present the awards are too political too be worthy of being proud off. If we can reproduce it, we must make a list of all the awards we have won in the course of the history of the "HCC dagen".

Off we go. some projects in Forth.

  • manx: playing music on metallophones and sound devices
  • ciforth project
  • The Ultimate Debugger
  • A music notation program
  • The Ultimate Editor
  • Beginners handboek for ciforth
  • The Pentium assembler mnemonics explanation
  • The Pentium assembler
  • LINUX Off Line
  • F' (or F PRIME)
  • Four color problem puzzle
  • Solitaire under linux
  • ssort in Forth
  • optimiser(missing)
  • FORTHERS AWAKE! STOP WRITING THOSE TOY PROGRAMS!

    If you decide to embark on one of these projects, you can be assured of my help. Or even cooperation. You can learn a lot! And not in the last place about project control. (I prefer that over "project management". Some "well managed" projects I have seen failing. I am very proud of one audit on a project where I was the project leader. It amounts to "project management is bad and the project is fully under control". A two year project and I was added to it in the last three months. It was fully out of hand when I started. I had to discard a 300 page detailed design document.)

    I am at a dan3+ level at least in c, c++, assembler, Forth, reverse engineering and project control. But you know that. Because you have seen my site and you haven't quit yet.


    ciforth project

    The ciforth project is the only of those that has already started. It is a "common Intel" ISO Forth intended to run on multiple platforms. It is a generic system that generates an assembler file in multiple configuration for bootable and MSDOS and Linux, 32 and 16 bits, protected and unprotected, complete or with loadable extensions. The Linux version has been stable for a long time now, likewise the Windows (DPMI) version and a version customized for Windows XP. It has the complete ISO core set plus what is deemed practical: CATCH GET-FILE INCLUDED BLOCKS string-handling. It has complete documentation and is published on this site. It stands my own recurrence test and the well-known test suite of the John Hopkins university.
    I can use some help, because this is never finished. There is now a stable and and an experimental branch, where I'm busy with optimisation.


    The Ultimate Debugger

    The other day I was testing the SAVE-SYSTEM of my ciforth . It crashes. Apparently it has not the proper format, somehow. Under LINUX I fire up the much touted gdb . It refuses to run... because the format is no good. An unpleasant experience... (Since then I have found the mistake I made in the ELF header.)

    I want a debugger written in Forth. Not like the debuggers that are in some Forth's. They are just part of that Forth and are only able to run well-behaved Forth code. No, I want a truly mouse and window oriented debugger at the system level and has the appearance and interactivity of the Atari debugger. One that starts will a screen chock full of information. It should be present at a level higher than the BIOS and certainly higher than Windows, and allow to improve the BIOS code and write it back. This can be done: the ICE boys did it. The ultimate reverse engineering tool. The disassembler of my Forth assembler for Intel could be one starting point. This beast should probably come in several version. The most important one is windows "driver", that once installed takes over the machine.
    Features: highest privilege level, permanent data store to keep reverse info,


    The Ultimate Editor

    I constantly use ee. It is like emacs and designed at about the same time. Without the bloat and without some of the design errors. It is written is C. With mouse support, windows integration etc. Coding at an ee-clone could start right away. No need to write documentation. It has been all done! I am using it right now. In this www-directory the keys are configured to put A /A around an marked area. Features: multiple file, configurable keys, configurable mouse click, configuration depending on current directory, unlimited undo, journalling.


    The Pentium assembler

    My Intel 386 assembler has been enhanced with all the instruction from the Pentium architecture. This was straightforward, painstaking but rewarding. The total instruction set of the Pentium, including floating point and the sixteen bit instructions is also present in the screens of the latest cforth. Leaving out the error detection and explanations results in slightly over a dozen screens for the full assembler.


    The Pentium assembler mnemonics explanation

    Documenting my Intel 386 assembler is a project in its own right. It has redesigned mnemonics, especially designed for reverse engineering. The Intel instruction set where 3 or 4 machine code instructions map unto the same assembler instruction is no good for that! Because of the complication of the Intel processor and its addressing mode, this is quite challenging. But I have succeeded in supplementing the documentation with a cross reference between the two systems. So this is another project finished, but I could use a helping hand because this kind of documentation really needs others to go over it to make it unusable.


    LINUX Off Line

    This project is part of the effort to put Forth and in particular ciforth on the map as a Linux development language.
    The Netherlands POSTBANK has a brain damaged program to access your bank account over the phone. It must be possible to make a much better program. Some politics gets involved: you must get the specification of the protocol accessing the postbank computer. If they refuse, it becomes a reverse engineering job. I can learn you how to do that! A prerequisite (or part) of this program is that we have learned to use the mouse in Forth.
    Features: You see just the transaction records, later additions : checking against cashier slips and such.

    F PRIME or F'

    This project is part of the effort to put Forth and in particular ciforth on the map as a Linux development language.
    You may have seen the X' program on this home page. It is a general solver for ODE (Ordinary Differential Equations), for the specification of a whole spectra of physical system. In Forth this can be done much better, less bloated. Also the user interface must be redesigned to be simpler and more intuitive, except for the plotting subpart, that was contributed by me. (Anecdote. That was, at first shot, a contribution of 40 man hours. One other X'-prime members contributed 600 man hours to the project, without any effect in the code. But although this was C++, I am a Forth programmer. ). A prerequisite (or part) of this program is that we have learned to use the mouse in Forth.

    Beginners handboek for ciforth

    People have criticized the Forth community for elitist behaviour. I want to better my ways. I am willing to cooperate with a novice to translate the ciforth manual in dutch (the use of English was one of the criticisms). Because the novice has to understand everything, he will learn a lot. Of course modifications to be better suited for novices can be made in parallel, or maybe afterwards.

    Four color problem puzzle

    This project is part of the effort to put Forth and in particular ciforth on the map as a Linux development language.
    Did you know that each map can be coloured with just four colors? This has been proven mathematically, just a few years ago and the proof was extremely hard and involved looking at so many special cases that a computer program had to be invoked. By generating a random map, this problem can be turned into a game. Click on a each country to change its color, and the game is won as soon as no neighbouring countries have the same color. The puzzle is hard if each country has sufficient neighbours. So we start with a brick wall, where each brick has six neighbours. Then we make a random modification such that two bricks together form one area. Of course there is a time limit and a high score. Like this
     ______________________________________________________________
    |__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|_ |__|__|__|
     |__|__|__|__|__|__|__|_____|__|__|__|_____|__|__|__|_ |__|__|_
    |__|__|_____|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|
     |_____|__|_ |__|__|__|_ |__|__|__|__| _|__|__|__|__|__|__|__|_
    |__|__|__|__|__|__|__|__|__|_____|__|__|__|__|__|__|__|__|__|__|
     |__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|
    
    
    

    Because this is an original game, it can draw more attention. This game has the advantage of the possibly of using character graphics. Colored blocks is all you need.

    Solitaire under linux

    This project is part of the effort to put Forth and in particular ciforth on the map as a Linux development language.
    Some of the nice games from MS-windows are not available under Linux. I think card games are well suited, because the graphics is not complicated. Just rectangular cards, to be drawn somewhere. The mouse clicks are not complicated either. But I am convinced that MS-Windows games that runs under Linux simulator for MS-Windows (WINE) will be outperformed by a similar game written in Forth, probably dramatically. Once in Forth we have a toolkit with mouse access and such, we can build card games fast and easily.
    This may not be original, but if it is playable it will attract an audience. If it is a popular game that is not available otherwise under Linux, the better.

    ssort in forth

    This project is part of the effort to put Forth and in particular ciforth on the map as a Linux development language.
    The documentation systems of tforth , ciforth and fig86.gnr all rely on ssort. This program allows to sort records defined by regular expressions and once you have used it, you will find it indispensable. This program is available in C++, is released for MSDOS and its
    binary is available on request for Linux. I want to have it rewritten in Forth, in the hope that it will make it into all Linux distributions as a Forth program. Because it is indispensable.
    Coding at ssort could start right away. No need to write documentation. That has been all done! No need to write test cases, that has all been done. There is little in the way of researching Linux system calls, such as for GUI projects. This should be an very attractive project for someone who wants to earn kudos in the Linux community, promoting Forth on the way.
    By the way. I will refuse any cooperating for projects other than open source. I prefer using the GNU license.

    Go to the home page of Albert van der Horst