Forth Success Stories

Forth can be found in:
- aerospace (including the space shuttle)
- embedded systems
- "Plug and Play"
- astronomy
- oceanography
- electrical engineering
- resource-scarce applications
- mathematics
- new and experimental hardware platforms
- Windows, Mac, DOS, Unix, and standalones
- microcontrollers
- ...and many others!
Music Application
Forth and Computer Music at the Technology in Music and The Related
Arts Department (TIMARA) of
Oberlin Conservatory
Entire
article
TalberTronics -
Projects by John Talbert
1984
The
prototype
of the MIDI Horn is designed and built. This is a wind controller with a
pressure sensor, 8 switches, and several sliders/pedals. The controller data is
fed to a single board Z8 microcomputer that interprets the data and converts it
to MIDI control signals. The Forth language was used for programming the
device as BASIC proved to be too slow.
1987
The final
version of the MIDI Horn is built. This is a MIDI controller instrument
based on a single board microcomputer and programmed in the Forth
programming language. Gary Nelson takes the MIDI Horn on the road with over 200
performances around the world. He uses the MIDI Horn as the performance
interface part of a 'hyperinstrument' consisting of a Macintosh computer, a set
of digital synthesizers, and the software (Max/MSP) linking them all together.
In a 'hyperinstrument' the controller does not necessarily play 'notes', it
sends performance signals acted upon by a computer program composed to control
how the music is played out.
After working with Forth Programming Language on the MIDI Horn I am
impressed with its speed, compactness, and ease of use. The Forth
language consists of a dictionary of words (subroutines) and several stacks for
storing the subroutine data. Programming in Forth is a matter of
building new 'words' by combining previously built words that are already in
the dictionary, thus creating a hierarchy of words. The higher-level words can
easily be tested by running their lower level components. Lower level words
that deal directly with the processor hardware are easily built, even using
assembly code if that is deemed necessary for speed.
The Ohio Scientific Microcomputer is upgraded in 1987 with a Forth
based system (RSC Forth). The language is significantly extended with words
that deal with the Hybrid Synthesizer, MIDI input and output, a timer device, a
new SID synthesizer chip, and all the devices used to control the analog
synthesizers such as control voltage DACs and ADCs, pulse detectors and
generators. The Hybrid Synthesizer interface is rebuilt with new waveform
generators and timer control. Floppy drives are installed for user storage of
programs.
1988
Analog synthesizer circuitry reaches a certain maturity with the
availability of chips such as Solid State Music chips and the Curtis music
chips. I use these to design and build an octal Voltage Controlled Amplifier
(VCA), a quad Voltage Controlled Filter (VCF), an Aural Exciter with all its
components available, and an Analog Delay Line box. All of these are
controllable with the Ohio Scientific Micro using the extended Forth
utility words.
1993
Work is started on designing and building control voltage to MIDI devices.
One project uses an 8088 microprocessor with a ROM based Forth system
controlling 8 bit ADCs. Another project is to reprogram a
Roland
PG1000 slider box to put out any type of MIDI signal.
- Contributed by Chris Passauer - 04/28/2006
|
Commercial Applications
Pulmonary Application
"A one-off hospital application in Forth has been running
continuously in the Pulmonary Division of Cedars-Sinai Medical Center since the
late '70s."
"The core applications were developed by Forth Inc. for the PDP 11/60
with only 16K of memory. Chuck Moore and Beth Rather apparently spent many a
long night hunched over Tektronix terminals, developing the tiny applications.
One was a real-time data acquisition system for Pulmonary Function Testing, and
the other was a database for Arterial Blood Gas data. The Forth kernel
was less than 1K. When they left, the applications were functional, although
the system did crash every 20 minutes or so."
"I've been working with this system since 1981, at which time a billing
application was also up, and the rudiments of an order entry system for
Respiratory Therapy was being developed. The latter would have been a 24x7
application, requiring a much more stable OS. After reverse-engineering the
kernel, I discovered a few bugs that had been causing the constant crashes. I
wrote a kernel generator so that I could fix the bugs and add some needed
capabilities, and rewrote the multi-programmer to be more efficient and stable.
We were on our way. Until a few years ago, there were always 2-3 programmers on
staff, just to develop and maintain applications."
"Over the years, applications were added and discarded, including a
real-time breath-by-breath exercise testing system, and various database
applications. It migrated to a PDP 11/84 in 1987 and then the application
source was rewritten for LMI's UR/Forth on a PC in 1998."
"Today the LMI Forth environment runs in a DOS box on a Windows 98SE
PC, interfacing to users, printer, barcode scanners, lab equipment and other
computers through 35 serial ports. It maintains HL7 links with other hospital
systems, sending lab data and receiving Admission/Discharge/Transfer
information. One port is fed by other hospital systems as a printer queue, and
hundreds of financial and clinical reports are "printed" daily to
this queue, where the Forth system parses them to populate numerous databases.
This gives us a unique ability to automatically reconcile information that
other departments must do by hand from printed reports."
"Today the main applications are all database applications; the
real-time applications having been replaced by turnkey systems that connect
serially. The main applications are RT order entry, billing, PFT/Exercise data
and ABG lab data. There are over 5,000 blocks of active Forth source
code - perhaps 50,000 lines of code. We have 2GB of mostly binary data,
comprising lab results, orders and financial data, some going back to the
1970s."
"I am now the manager of the Pulmonary Medicine department and the only
person still supporting the Forth system. It is still in constant flux,
adding capabilities and adapting to patient care and efficiency requirements.
Hospitals are a regulatory and financial challenge today. Few operate in the
black, and all have difficulty keeping up with rapidly changing patient care
technology and regulations. Our system is unique in that it costs next to
nothing to operate, yet we have total control over all the applications, and,
owing to the ease and power of Forth programming, can adapt on short
notice."
- George Applegate - 11/20/2004
|
Argo submersible vehicle
Argos's ensemble of sonar, lights and cameras was orchestrated by an array
of computers that each programmed in a different computer language. The
computer on the unmanned Argo itself was programmed in Forth, a concise
but versatile language originally designed to regulate movement of telescopes
and also used to control devices and processes ranging from heart monitors to
special-effects video cameras. The computer on the Knorr was programmed in C, a
powerful but rather cryptic language capable of precisely specifying computer
operations. The telemetry system at either end of the finger thick coax cable
connecting the vessels, which in effect enabled their computers to talk to each
other, was programmed in a third, rudimentary tongue known as assembly
language.
Forth was the only high-level language that could be used on the
submersible Argo's computer.
- Exerpted from:
The
Tortuous Path of Early Programming
Check out this Enchanted Learning
webpage
for information on Robert D. Ballard, Undersea Explorer
A one line reference to this Forth application can be found
in the 1985 entry on Byte's
A Brief History of
Programming Languages: "Forth controls the submersible sled
that locates the wreck of the Titanic"
|
BART parking lot controllers by
AM Research
"The BART parking lot controllers are running an early version of
amrFORTH on an 80C552 microcontroller. Done almost 10 years ago, you'll see
this machine as a stainless steel box inside the station after you purchase
your ticket and enter the turnstile."
"You must remember your parking stall number then enter that into the
machine. A distributed database contains all the currently used parking stalls.
Security punches a special code and gets a printout of ostensibly empty stalls,
any cars in which are ticketed. This prevents BART parking lots from being
overfilled with shoppers while still making parking accessable to
patrons."
- Albert Lee Mitchell - 01/15/2004
|
Ztar MIDI Controller
The Starr Labs Ztar is a guitar-like controller for MIDI musical
synthesizers. Unlike devices which attempt to derive a MIDI control stream from
the audio output of a conventional guitar, the Ztar is a fully digital
instrument with an internal microprocessor and sensors for frets and strings.
Hundreds of sensors must be sampled and processed in real time to generate a
MIDI control stream, and to avoid timing discrepancies that would be painfully
noticeable in a musical performance. The Ztar uses a Zilog Super8
microprocessor, programmed in a mixture of Forth and assembler, to
satisfy these requirements.
|
Tektronix
WAN/LAN Protocol Analyzer
This product is a sophisticated database application using Forth.
Also see the following links:
|
Dorado Systems
"Here's a thumbnail of Forth and Dorado Systems. We sold 650 energy
controllers to Lucky Markets done in Forth, several thousand access
control panels and tens of thousands of magnetic stripe card readers (4,000
alone to Denver International Airport)."
"All products were done in Forth, mostly 68HC11, in Forth
assembler and some larger products in energy control, card reader encoding,
etc. in high level Forth. Some products ran on PCs, some 6502s for 68HC11
imbedded systems. Andrew McKewan was our guru as I phased out of programming
products in the late 80s."
- Bill Ragsdale - 01/15/2004
|
Projects
Boeing
Boeing 777 avionics systems
Designed and coded embedded Forth kernels to run on Boeing 777
avionics systems. The Forthkernels are used for verification of
engineering design, verification of manufacturing, and debugging of failed
hardware units. The kernel was written in assembly language for the 68030,
68332, and 80960 microprocessors. I taught introductory Forth
programming classes to the hardware design engineers, and assisted with
problems in their Forth code. Development was done on a VAX computer
using CMS (Code Management System) to track source code development. Debug and
integration of the kernel was done using In-Circuit-Emulators.
- Robert Blythe
|
Functional Test Kernels
Was responsible for embedding Functional Test Kernels (FTK) in all CAS/CMS
777 LRUs. The FTK is a Forth interpreter resident on all Boeing 777
computer boards. Task also required incorporating new Forth features and
new hardware for 68xxx series.
- Dennis R.
Montgomery
|
Research Applications
Rehabilitation Applications
Alexis
Wheelchair
Alexis was an innovative electric wheelchair using a "wheels within
wheels" design. It is unique in that it can turn in its own footprint and
move sideways. The VA Palo Alto Heath Care System's Rehab R&D Center
licensed Intex Industries to make Alexis commercially available in 1987, and
Intex made 40 pre-production units for field trials in the San Antonio area.
During subsequent redesign efforts, the company filed for bankruptcy,
preventing further commercialization at this time.
|
Lingraphica
Lingraphica is a portable assistive and therapeutic communication device for
people with aphasia from stroke or other brain injury. It was developed under a
VA Merit Review project at the Rehab R&D Center in 1987-1989 and
commercialized in 1990 under the Technology Transfer Act. In 1996, the parent
company, Lingraphicare America, redirected its efforts from selling medical
devices to providing clinical language and speech therapy services to adults
with aphasia. Their services employing Lingraphica report greater rates of
improvement and better ultimate outcomes than traditional speech-language
therapy.
|
Ultrasonic Head Controlled
Wheelchair
This interface for a motorized wheelchair permits individuals with
quadriplegia to control the wheelchair's speed and direction by tilting their
head. in the desired direction of travel.
|
Ralph Fingerspelling
Hand
This computer-controlled electromechanical fingerspelling hand offers
deaf-blind individuals improved access to computers and communication devices
in addition to person-to-person conversations.
|
Please submit Forth success stories and commercial applications to the FIG
webmaster.
FIG Home
page
|