home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
vol_100
/
122_01
/
vocab
< prev
next >
Wrap
Text File
|
1984-03-07
|
5KB
|
164 lines
VOCABULARY RELATED WORDS:
copyright (C) 1983 by E. E. Bergmann
definitions in alphabetical(ASCII) order
:
::
*********************************************************
* *
* PISTOL-Portably Implemented Stack Oriented Language *
* Version 2.0 *
* (C) 1983 by Ernest E. Bergmann *
* Physics, Building #16 *
* Lehigh Univerisity *
* Bethlehem, Pa. 18015 *
* *
* Permission is hereby granted for all reproduction and *
* distribution of this material provided this notice is *
* included. *
* *
*********************************************************
:
::
(PISTOL<) Variable that contains pointer to most recent
definition in the PISTOL< vocabulary branch;
see PISTOL<, below.
(UNLINKED<) Variable that contains pointer to most recent
definition in the UNLINKED< vocabulary branch;
see UNLINKED<, below.
.V --> (pointer to top of vocabulary stack)
It is the vocabulary stack pointer.
> Pops (removes from) the top of the Vocabulary
Stack, which contains a list of Vocabulary
Branches to be searched by the interpreter or
by the FIND command.
ADDRESS '<name> --> (its address)
If the word is not found, an error diagnostic
is provided.
BLIST Utility that types out a list of all Vocabulary
Branches that exist ("Branch List").
BRANCH Creates a new "catagory" or "heading" for
definitions; creates a new vocabulary whose
name is what has been placed on the stack.
For example:
X> 'SPECIAL< BRANCH
X> SPECIAL< DEFINITIONS
X> 'FIRST : .... ;
.
.
X> > DEFINITIONS % finish definitions for
X> % SPECIAL< vocabulary
CURRENT Variable containing pointer to Vocabulary
Branch into which the next word definition
will be placed. Normally, this pointer points
at the last definition.
DEFINITIONS Changes the CURRENT pointer to match the latest
Vocabulary Branch on the Vocabulary Stack.
Thus, further word definitions will be placed
in the Branch that is currently on the top of
the Vocabulary stack (see the example given
above for BRANCH).
FENCE Variable containing lower limit for FORGET, see
below.
FIND '<name> --> (its address) if found
--> FALSE if not found
FORGET '<name> -->
Removes all definitions recently defined back
back to and including the defintion of <name>.
Will ABORT if the address of <name> is below
(before) the value of FENCE, see above.
NAME TOS -->
Takes the TOS as an address of a definition or
a "primitive" ( an "opcode" that can be
interpreted, even so it is not an address)
and prints its name. NAME is used by the
disassembler, by TRACE, and by the definition
listers, such as NEXT10, below.
NEXT10 TOS --> ADDR
Takes the TOS as the address of a definition;
That definition and the preceding 9 definitions
in the same vocabulary are listed by address
and NAME. Upon completion, the address of the
next logically listable definition, ADDR, is
left on stack. So, for example, to list the
last thirty definitions one could type:
X> TOP10 NEXT10 NEXT10 DROP
PISTOL< Accesses the original vocabulary branch of
PISTOL. Invoking this word will place
(PISTOL<) on the top of the vocabulary stack
so that this branch will be first in the
search path.
PREVIOUS Variable that contains the address of the
previous link to the definition last found
by FIND or VFIND. It is used by UNLINK and
RELINK to obtain the link to the item searched
for.
PRIMITIVE? TOS --> TRUE|FALSE
Decides whether the TOS is a suitable value to
be an "opcode" to be executed directly by the
PISTOL "primitive" interpreter, PINT, as
opposed to the address of a higher level
definition. It is used by NAME to decide
that TOS is not the address of a definition
entry.
RELINK '<name> -->
Searches the UNLINKED< Vocabulary Branch for
the <name> definition; if found, it is removed
from that Branch and (re)attached to the
Vocabulary Branch that is at the top of the
Vocabulary Stack.
TOP10 --> ADDR
Lists the ten most recent definitions in the
CURRENT vocabulary branch. It leaves the
address of the next definition to be listed
on the stack to be available for NEXT10; see
the example of use above for NEXT10.
UNLINK '<name> -->
Searches for the <name> definition; if found,
it is removed from its vocabulary branch and
attached to the UNLINKED< vocabulary branch.
It is used to removed from the usual search
path those definitions which are no longer of
use or which are too dangerous to be easily
accessible.
UNLINKED< Vocabulary branch into which all UNLINKed
definitions are placed (see UNLINK, RELINK).
Invoking UNLINKED< will place (UNLINKED<)
at the top of the vocabulary stack.
VADDRESS '<name> VOCAB --> (address)
Similar to ADDRESS, but only the specified
vocabulary branch is searched.
VFIND '<name> VOCAB --> (address)|FALSE
Similar to FIND, except that only the specified
vocabulary branch is searched.
VLIST --> ADDR
Lists the ten most recent definitions in the
topmost branch on vocabulary stack. It leaves
the address of the next definition to be listed
on the stack to be available for NEXT10;
similar to TOP10 (see above).
:
r NEXT10