Go to the first, previous, next, last section, table of contents.
- (Cell) aligned addresses:
-
processor-dependent. Gforth's alignment words perform natural alignment
(e.g., an address aligned for a datum of size 8 is divisible by
8). Unaligned accesses usually result in a
-23 THROW
.
EMIT
and non-graphic characters:
-
The character is output using the C library function (actually, macro)
putc
.
- character editing of
ACCEPT
and EXPECT
:
-
This is modeled on the GNU readline library (see section `Command Line Editing' in The GNU Readline Library) with Emacs-like key bindings. Tab deviates a little by
producing a full word completion every time you type it (instead of
producing the common prefix of all completions).
- character set:
-
The character set of your computer and display device. Gforth is
8-bit-clean (but some other component in your system may make trouble).
- Character-aligned address requirements:
-
installation-dependent. Currently a character is represented by a C
unsigned char
; in the future we might switch to wchar_t
(Comments on that requested).
- character-set extensions and matching of names:
-
Any character except the ASCII NUL charcter can be used in a
name. Matching is case-insensitive (except in
TABLE
s. The
matching is performed using the C function strncasecmp
, whose
function is probably influenced by the locale. E.g., the C
locale
does not know about accents and umlauts, so they are matched
case-sensitively in that locale. For portability reasons it is best to
write programs such that they work in the C
locale. Then one can
use libraries written by a Polish programmer (who might use words
containing ISO Latin-2 encoded characters) and by a French programmer
(ISO Latin-1) in the same program (of course, WORDS
will produce
funny results for some of the words (which ones, depends on the font you
are using)). Also, the locale you prefer may not be available in other
operating systems. Hopefully, Unicode will solve these problems one day.
- conditions under which control characters match a space delimiter:
-
If
WORD
is called with the space character as a delimiter, all
white-space characters (as identified by the C macro isspace()
)
are delimiters. PARSE
, on the other hand, treats space like other
delimiters. PARSE-WORD
treats space like WORD
, but behaves
like PARSE
otherwise. (NAME)
, which is used by the outer
interpreter (aka text interpreter) by default, treats all white-space
characters as delimiters.
- format of the control flow stack:
-
The data stack is used as control flow stack. The size of a control flow
stack item in cells is given by the constant
cs-item-size
. At the
time of this writing, an item consists of a (pointer to a) locals list
(third), an address in the code (second), and a tag for identifying the
item (TOS). The following tags are used: defstart
,
live-orig
, dead-orig
, dest
, do-dest
,
scopestart
.
- conversion of digits > 35
-
The characters
[\]^_'
are the digits with the decimal value
36-41. There is no way to input many of the larger digits.
- display after input terminates in
ACCEPT
and EXPECT
:
-
The cursor is moved to the end of the entered string. If the input is
terminated using the Return key, a space is typed.
- exception abort sequence of
ABORT"
:
-
The error string is stored into the variable
"error
and a
-2 throw
is performed.
- input line terminator:
-
For interactive input, C-m (CR) and C-j (LF) terminate
lines. One of these characters is typically produced when you type the
Enter or Return key.
- maximum size of a counted string:
-
s" /counted-string" environment? drop .
. Currently 255 characters
on all ports, but this may change.
- maximum size of a parsed string:
-
Given by the constant
/line
. Currently 255 characters.
- maximum size of a definition name, in characters:
-
31
- maximum string length for
ENVIRONMENT?
, in characters:
-
31
- method of selecting the user input device:
-
The user input device is the standard input. There is currently no way to
change it from within Gforth. However, the input can typically be
redirected in the command line that starts Gforth.
- method of selecting the user output device:
-
EMIT
and TYPE
output to the file-id stored in the value
outfile-id
(stdout
by default). Gforth uses buffered
output, so output on a terminal does not become visible before the next
newline or buffer overflow. Output on non-terminals is invisible until
the buffer overflows.
- methods of dictionary compilation:
-
What are we expected to document here?
- number of bits in one address unit:
-
s" address-units-bits" environment? drop .
. 8 in all current
ports.
- number representation and arithmetic:
-
Processor-dependent. Binary two's complement on all current ports.
- ranges for integer types:
-
Installation-dependent. Make environmental queries for
MAX-N
,
MAX-U
, MAX-D
and MAX-UD
. The lower bounds for
unsigned (and positive) types is 0. The lower bound for signed types on
two's complement and one's complement machines machines can be computed
by adding 1 to the upper bound.
- read-only data space regions:
-
The whole Forth data space is writable.
- size of buffer at
WORD
:
-
PAD HERE - .
. 104 characters on 32-bit machines. The buffer is
shared with the pictured numeric output string. If overwriting
PAD
is acceptable, it is as large as the remaining dictionary
space, although only as much can be sensibly used as fits in a counted
string.
- size of one cell in address units:
-
1 cells .
.
- size of one character in address units:
-
1 chars .
. 1 on all current ports.
- size of the keyboard terminal buffer:
-
Varies. You can determine the size at a specific time using
lp@
tib - .
. It is shared with the locals stack and TIBs of files that
include the current file. You can change the amount of space for TIBs
and locals stack at Gforth startup with the command line option
-l
.
- size of the pictured numeric output buffer:
-
PAD HERE - .
. 104 characters on 32-bit machines. The buffer is
shared with WORD
.
- size of the scratch area returned by
PAD
:
-
The remainder of dictionary space. You can even use the unused part of
the data stack space. The current size can be computed with
sp@
pad - .
.
- system case-sensitivity characteristics:
-
Dictionary searches are case insensitive (except in
TABLE
s). However, as explained above under character-set
extensions, the matching for non-ASCII characters is determined by the
locale you are using. In the default C
locale all non-ASCII
characters are matched case-sensitively.
- system prompt:
-
ok
in interpret state, compiled
in compile state.
- division rounding:
-
installation dependent.
s" floored" environment? drop .
. We leave
the choice to gcc
(what to use for /
) and to you (whether to use
fm/mod
, sm/rem
or simply /
).
- values of
STATE
when true:
-
-1.
- values returned after arithmetic overflow:
-
On two's complement machines, arithmetic is performed modulo
2**bits-per-cell for single arithmetic and 4**bits-per-cell for double
arithmetic (with appropriate mapping for signed types). Division by zero
typically results in a
-55 throw
(Floating-point unidentified
fault), although a -10 throw
(divide by zero) would be more
appropriate.
- whether the current definition can be found after DOES>:
-
No.
Go to the first, previous, next, last section, table of contents.