The model that FORTH, Inc. used for many years in polyFORTH and its
predecessors featured a shared main dictionary with private dictionaries
for certain tasks defined as "terminal" tasks. In the days of
minicomputers (e.g. PDP-11) there could be many actual users, each with
a "dumb" terminal. We had systems with 32 or more such users on a
central CPU.
The original task was named OPERATOR, and it alone had the capability to
add definitions to the root dictionary (in addition to having a private
dictionary). Other terminal tasks' private dictionaries linked to that
root dictionary, which contained general Forth words as well as shared
portions of the application. Each task had "user variables" that
controlled private dictionary allocation, search order, etc. FORGET
could work only in the user's private dictionary space (this was
pre-MARKER). EMPTY cleared the user dictionary, leaving the task
connected to the top of the root dictionary.
Other tasks, called "background" tasks, had fewer user variables no
provision for private definitions. They executed code in the shared
thread, but had private user variables for stack pointers, etc.
Nowadays, we see a lot less need for private dictionaries, and
SwiftForth does not support them. However, it still supports terminal
tasks with independent I/O and user interface parameters.
Cheers,
Elizabeth
--
==================================================
Elizabeth D. Rather (US & Canada) 800-55-FORTH
FORTH Inc.
+1 310.999.6784
5959 West Century Blvd. Suite 700
Los Angeles, CA 90045
http://www.forth.com
"Forth-based products and Services for real-time
applications since 1973."
==================================================