Practical and theoretical aspects of FORTH software development

This is an investigation into the use of the Forth programming environment. The main areas of enquiry were: interfacing Forth to other languages; interfacing Forth and local area networks; and the use of RISC processors with stack based architecture such as the NC4000 and Harris RTX series. We describe how t o i n terface Forth a n d C. W e also provide a system with a multi-tasking interrupt driven interface to the Ibm NetBios networking software and a simple, generic, method of task activation through message passing. Many aspects of the investigation proved to be dependent on a more thorough theoretical underpinning for the Forth language. The use of a typeless parameter stack means that a programmer must concern himself with the intellectual burden of managing the parameter stack. The mismatching of stack elements can be the cause of subtle logic errors. We therefore investigated the possibility o f d e v eloping a type algebra" that would allow u s t o d e v elop a typed version of Forth. This thesis includes a theory for a type signature algebra" for the stack based argument passing method used by Forth. To support the use of multi-tasking we provide a simple, but formal, theory of concurrent tasks based on state machines that synchronise on events. This has a graphical notation for people who are not familiar with formal notations. We also looked at how formalisms might be used to deene a semantic model for the Forth language and how formalisms can help to deene the relationship between Forth's stack based virtual machine and register based target processors.

[1]  Charles B Duff ACTOR, a threaded object-oriented language , 1986 .

[2]  Ken Knecht,et al.  Introduction to FORTH , 1982 .

[3]  J. Michael Spivey,et al.  The Z notation - a reference manual , 1992, Prentice Hall International Series in Computer Science.

[4]  W. David Schwaderer C Programmer's Guide to Netbios , 1988 .

[5]  Mark Phillips CICS/ESA 3.1 Experiences , 1989, Z User Workshop.

[6]  Thomas Almy Compiling Forth for performance , 1986 .

[7]  C. H. Moore,et al.  FORTH: a new Way to Program a Mini Computer , 1974 .

[8]  Jack Minker,et al.  Optimization of Boolean Expressions-Historical Developments , 1980, Annals of the History of Computing.

[9]  T. C. Nash Using Z to Describe Large Systems , 1989, Z User Workshop.

[10]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[11]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[12]  Jonathan P. Bowen The Formal Specification of a Microprocessor Instruction Set , 1987 .

[13]  Andrew S. Tanenbaum,et al.  Using Peephole Optimization on Intermediate Code , 1982, TOPL.

[14]  Peter M. Kogge,et al.  An Architectural Trail to Threaded-Code Systems , 1982, Computer.

[15]  J. Bruno,et al.  The Generation of Optimal Code for Stack Machines , 1975, JACM.

[16]  Bill Stoddart Readable and efficient parameter access via argument records , 1986 .

[17]  Jr. Philip J. Koopman,et al.  Stack computers: the new wave , 1989 .

[18]  Antoni Diller,et al.  Z - an introduction to formal methods , 1990 .

[19]  Leo Brodie Thinking Forth , 1984 .

[20]  Anthony Rose Design of a fast 68000-based subroutine threaded Forth , 1986 .

[21]  Carroll Morgan,et al.  Programming from specifications , 1990, Prentice Hall International Series in computer science.

[22]  David R. Hanson Code Improvement Via Lazy Evaluation , 1980, Inf. Process. Lett..

[23]  Bjarne Stroustrup,et al.  The C++ Programming Language, Second Edition , 1991 .

[24]  J. Michael Spivey Specifying a real-time kernel , 1990, IEEE Software.

[25]  Bill Stoddart Technical note: nested error handlers , 1987 .

[26]  Ray Duncan The MS-DOS encyclopedia , 1988 .

[27]  C. L. Stephens,et al.  PolyForth: an electronics engineer's programming tool , 1986, Softw. Eng. J..

[28]  Jim Woodcock,et al.  Software engineering mathematics : formal methods demystified , 1988 .

[29]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.