Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Conklin E.K.Forth programmer's handbook.2000.pdf
Скачиваний:
321
Добавлен:
23.08.2013
Размер:
2.04 Mб
Скачать

3. SYSTEM FUNCTIONS

Forth is more than a programming language. The earliest versions of Forth ran standalone on primitive minicomputers and microprocessors in the 1970s, providing an integrated system, language, and application functions in a single package. This heritage persists in the Forth virtual machine, even though today it is frequently implemented on top of a conventional operating system.

This section describes words used to load, organize, and manage Forth applications, as well as standard system devices (disk, terminal, and clock). But before considering details of various Forth system functions, the next section will present a fundamental concept commonly used to implement system functions.

3.1 VECTORED ROUTINES

It is often desirable to modify or re-direct system functions, because of changing hardware or application requirements, without recompiling the system kernel. Forth facilitates this by providing execution vectors containing the addresses of the current versions of these functions. There are two groups of vectored routines: system-wide functions and terminal-dependent functions (i.e., those whose behavior differs between different kinds of CRT or between keyboard/display and printer). For each vectored function, there are at least three Forth words: the function itself (which performs a @ EXECUTE on the vector), the vector itself, and at least one routine to be executed.

Table 5 summarizes the vectored routines controlled on a system-wide basis on some Forth systems.

System Functions 77

Forth Programmer’s Handbook

Table 5: Common system-level vectored routines

Function

Vector

Primitive

Description*

BLOCK

'BLOCK

(BLOCK)

Returns the address of a specified block.

BUFFER

'BUFFER

(BUFFER)

Returns the address of an available buffer,

 

 

 

identified as containing a specified block.

CREATE

'CREATE

(CREATE)

Creates a dictionary entry.

NUMBER

'NUMBER

(NUMBER)

Converts a string at a given address to

 

 

 

binary on the stack.

* See references, below, for details.

In addition, some routines in multitasking systems are vectored through user variables for differing task-specific functions. Typically, these control CRTs, printers, and other serial devices, or application functions such as databases. Refer to your product documentation for specific details of vectored system functions on your implementation.

References BLOCK and BUFFER, Section 3.4

CREATE, Section 4.2.1

Support of special terminal functions, Section 3.3.3

TYPE, Section 3.3.2

Vectored execution, Section 2.5

3.2 SYSTEM ENVIRONMENT

Standard Forth systems provide a mechanism for inquiring about the configuration and parameters of a particular system, either interactively at the keyboard or within program code. The word ENVIRONMENT? expects to find on the stack the address and length of a text string referring to an option or parameter, and returns either a single false flag (parameter/option is unknown), or a true flag (known) on top of the stack, with a second flag or data value beneath. The word S" (see Section 4.1.5.2), which returns the address and length of a string, is often used with ENVIRONMENT?. For example, the string STACKCELLS is defined as indicating the maximum number of cells in the data stack. You might type at the keyboard, or include in a definition, the phrase:

78 System Functions

Forth Programmer’s Handbook

S" STACK-CELLS" ENVIRONMENT?

which might return

256 -1

where the -1 (true) indicates that the system recognized the STACK-CELLS string, and the 256 shows that the maximum size of the stack is 256 cells. Table 6 gives the standard strings available for environmental queries and the data values they may return. The data type is the type of the associated data or second flag.

Most word sets contain a basic part and extensions, which may be tested for individually. For example, in this table, BLOCK and BLOCK-EXT separately test for the presence of the basic block word set and the block extensions word set.

Table 6: Environmental query strings and associated data

String

Type

Meaning

/COUNTED-STRING

n

Maximum size of a counted string, in characters.

/HOLD

n

Maximum size of pictured numeric output string,

 

 

in characters.

/PAD

n

Size of the scratch area PAD in characters.

BLOCK

flag

true if block word set is present.

BLOCK-EXT

flag

true if block extensions word set is present.

CORE

flag

true if complete Standard Forth core word set is present.

CORE-EXT

flag

true if complete Standard Forth core extensions word set is

 

 

present.

DOUBLE

flag

true if double number integer word set is present.

DOUBLE-EXT

flag

true if double-number extensions integer word set is

 

 

present.

EXCEPTION

flag

true if exception word set is present.

EXCEPTION-EXT

flag

true if exception extensions word set is present.

FACILITY

flag

true if facility word set is present.

FACILITY-EXT

flag

true if facility extensions word set is present.

FILE

flag

true if file word set is present.

System Functions 79

Forth Programmer’s Handbook

Table 6: Environmental query strings and associated data (continued)

String

Type

Meaning

FILE-EXT

flag

true if file extensions word set is present.

FLOATING

flag

true if floating-point word set is present.

FLOATING-EXT

flag

true if floating-point extensions word set is present.

FLOATING-STACK

n

If n=0, floating-point numbers are kept on the

 

 

data stack; otherwise, n is the maximum depth of the sepa-

 

 

rate floating-point stack.

FLOORED

flag

true if floored division is the default,

 

 

false if symmetric division is the default.

MAX-CHAR

u

Maximum value of a character in the

 

 

implementation-defined character set.

MAX-D

d

Largest usable signed double number.

MAX-FLOAT

r

Largest usable floating-point number.

MAX-N

n

Largest usable signed integer.

MAX-U

u

Largest usable unsigned integer.

MAX-UD

ud

Largest usable unsigned double number.

MEMORY-ALLOC

flag

true if memory-allocation word set is present.

RETURN-STACK-CELLS

n

Maximum size of the return stack, in cells.

STACK-CELLS

n

Maximum size of the data stack, in cells.

SEARCH-ORDER

flag

true if search-order word set is present.

SEARCH-ORDER-EXT

flag

true if search-order extensions word set is present.

STRING

flag

true if string word set is present.

TOOLS

flag

true if programming tools word set is present.

TOOLS-EXT

flag

true if programming tools extensions word set is present.

WORDLISTS

n

Maximum number of word lists usable in the search order.

Because a system may load options in any order, some environmental queries could return either false or true, depending on when they were executed. The Standard Forth requirements are:

!If a query returns false (unknown) in response to a string, subsequent queries with that string may return true, because additional capabilities may have been

80 System Functions

Соседние файлы в предмете Электротехника