home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
vol_100
/
122_01
/
memops
< prev
next >
Wrap
Text File
|
1984-03-07
|
4KB
|
124 lines
MEMORY RELATED OPERATORS:
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. *
* *
*********************************************************
:
::
1+W! ADDR -->
Increments the word in RAM at ADDR by one.
? ADDR -->
Prints the word value located in RAM at ADDR;
equivalent to: W@ =
C! stores in the string area addressed by the top of
stack the character whose ASCII value is next to
the top.
C@ fetches the ASCII value of the character in the
string area addressed by the top of stack.
COMPBUF System constant that points to the compile buffer in
RAM.
EDITBUF System constant that points in the strings area to the
start of the editbuffer. It also is the upper limit of
the input linebuffer, see LINEBUF.
LINEBUF System constant that points in the strings area to the
start of the input line buffer that is filled in the
process of compiling a line of PISTOL. It is filled
by GETLINE.
OFF sets location addressed by top of stack to FALSE.
ON sets location addressed by top of stack to TRUE.
RAMMAX System constant that points to the end of accessible
RAM.
RAMMIN System constant that points to the start of accessible
RAM; the area between RAMMIN and USER contains system
constants that can be read from but not written to.
READ-PROTECT
Boolean system constant. If it is true, then operators
that access memory for reading are checked for legal
ranges. For example, addresses must be in the range,
[RAMMIN..RAMMAX] for W@ and [STRINGSMIN..STRINGSMAX]
for C@ . If the address during a read is outside these
limits, an error "READ VIOLATION" is generated and the
program does an ABORT.
STRINGSMAX System constant that points to the end of the
strings area.
STRINGSMIN System constant that points to the start of the
strings area.
TRANS converts the logical address to the "actual address".
It is equivalent to mutiplying by the wordsize, W , and
adding the offset, USER ; its definition is, in effect:
W * USER +
TRANS@ Equivalent to: TRANS W@
USER System constant that points to near the bottom of RAM.
It points to the lowest system variable location and
marks the top of the area where the system constants
are in RAM; these constants can be read with W@, but
not changed by W!
USER+ equivalent to: USER +
W System constant that gives the word size in address
units; see, for example, W+ , below.
W! Stores at the word location addressed by the top of
stack the value next to top.
W* TOS --> W*TOS
Multiplies the top of stack by the wordsize, W ;
Equivalent to: W *
W+ TOS --> W+TOS
Increments the top of stack by the wordsize of the
implementation; equivalent to: W +
W+W! ADDR -->
Increments the word in RAM at ADDR by the wordsize, W.
W<- equivalent to " SWAP W! "
W@ Fetches the contents of the word location addressed
by the top of stack (used extensively with words
defined by VARIABLE).
WRITE-PROTECT
Boolean system constant. If it is true, then operators
that access memory for writing are checked for legal
ranges. For example, addresses must be in the range,
[USER..RAMMAX] for W! and [STRINGSMIN..STRINGSMAX]
for C! . If the address during a write is outside
these limits, an error "WRITE VIOLATION" is generated
and the program does an ABORT.
:
ER +
W System constant t