Commit 985e4f2f authored by pknaggs's avatar pknaggs

2014.4 Updates

parent 97e6b856
This diff is collapsed.
% !TeX root = forth.tex
% !TeX spellcheck = en_US
% ========== Document Configuration ==========
%\inlinetrue % Inline Rationale/Implementation/Testing with glossary entry
\inlinefalse % Rationale/Implementation/Testing deferred to appropriate annex
%\showreftrue % Display Cross Reference lables (PDF/HTML targets)
\showreffalse % Hide lables
\releasefalse % Draft document (with change markup)
%\releasetrue % Release Candidate document (without markup)
\newcommand{\revision}{14.4} % Document Revision
\newcommand{\snapshot}{2012} % Year of Snapshot
\newcommand{\release}{3} % Release Candidate
% ========== End Configuration ==========
\ No newline at end of file
......@@ -101,7 +101,7 @@ considerable success in the market place. This allowed them to identify
and document features common to these systems, many of which had not been
included in any previous standard.
This was the most comprehensive review of Forth systems to date, taking
eighty seven days covering twenty three meetings over eight years.
eighty\place{ed14}{-}seven days covering twenty\place{ed14}{-}three meetings over eight years.
The inclusive nature of the standard allowed the various factions within
the community to unify in support of ANS Forth, with many systems
providing a compatibility layer.
......@@ -215,12 +215,23 @@ Forth 94 declared seven words as `obsolescent', all but
\end{description}
\subsection{Combined Floating-point/Data Stack Obsolescent} % D.7.2
\subsection[Separate Floating-point Stack is now Standard]{%
\replace{X:fp-stack}{Combined Floating-point/Data Stack Obsolescent}{%
\newline Separate Floating-point Stack is now Standard}
} % D.7.2
\label{diff:fpstack}
\remove{X:fp-stack}{%
The requirement for floating-point numbers to be kept on the data stack
has been marked as obsolescent. This was previously an environmental
dependency/restriction.
dependency/restriction.}
\place{X:fp-stack}{%
Previously systems could implement either a separate floating-point
stack or a combined floating-point/data stack; programs were required
to cater for both (or declare an environmental dependency on a particular
variant).
}
\begin{description}
\item[Words Affected:] ~\\
......@@ -242,9 +253,14 @@ dependency/restriction.
Forth 94 programs (without environmental dependency, i.e., those
working on either kind of system) remain standard programs.
\remove{X:fp-stack}{%
Forth 94 systems that implement a separate floating-point stack
are now standard systems and no longer have an environmental
restriction on providing a floating-point stack.
restriction on providing a floating-point stack.}
\place{X:fp-stack}{%
Forth 94 systems that implement a separate floating-point stack
continue to be standard systems.}
Forth 94 systems that implement a combined stack become systems
with an environmental restriction of not providing a separate
......@@ -278,7 +294,6 @@ word-set query. As the committee could find very few examples of the
word-set queries being used, it chose not to update the word set-query
mechanism, but rather to mark it as obsolescent.
\pagebreak
\begin{description}
\item[Words Affected:] ~\\
\word{ENVIRONMENT?}
......@@ -370,7 +385,7 @@ mechanism, but rather to mark it as obsolescent.
\item[Transition/Conversion:] ~\\
Existing programs are unaffected. Systems implementing the locals
wordset have to be changed to support at least 16 (previously 8)
\replace{ed14}{wordset}{ word set} have to be changed to support at least 16 (previously 8)
locals.
\end{description}
......@@ -379,7 +394,7 @@ mechanism, but rather to mark it as obsolescent.
\label{diff:12:prefix}
Decimal, hexadecimal, binary number literals can now be written
irrespective of BASE by using the prefix \#, \$, \%. Also, character
irrespective of \word{BASE} by using the prefix \#, \$, \%. Also, character
literals can be written as 'c'.
Standard programs are unaffected. Systems have to be changed to
......@@ -455,16 +470,19 @@ The following words have been added to \xref{wordlist:core-ext}:
\html{<br class="clear" />}
\subsection{Block word sets}
No words have been added to \xref{wordlist:block}.
\pagebreak
\subsection[Block word sets]{\remove{ed14}{Block word sets}}
\remove{ed14}{No words have been added to \xref{wordlist:block}.}
%\stepcounter{subsection}
\subsection{Double-Number word sets}
The following words have been added to \xref{wordlist:double-ext}:
\wref{double:2VALUE}{}
\subsection{Exception word sets}
No words have been added to \xref{wordlist:exception}.
\subsection[Exception word sets]{\remove{ed14}{Exception word sets}}
\remove{ed14}{No words have been added to \xref{wordlist:exception}.}
%\stepcounter{subsection}
\subsection{Facility word sets}
The following words have been added to \xref{wordlist:facility-ext}:
......@@ -551,8 +569,9 @@ The following words have been added to \xref{wordlist:local-ext}:
\wref{local:b:}{}
\subsection{Memory-Allocation word sets}
No words have been added to \xref{wordlist:memory}.
\subsection[Memory-Allocation word sets]{\remove{ed14}{Memory-Allocation word sets}}
\remove{ed14}{No words have been added to \xref{wordlist:memory}.}
%\stepcounter{subsection}
\subsection{Programming-Tools word sets}
\label{diff:12:tools}
......@@ -574,8 +593,9 @@ The following words have been added to the \xref{wordlist:tools-ext}:
\end{minipage}
\html{<br class="clear" />}
\subsection{Search-Order word sets}
No words have been added to \xref{wordlist:search}.
\subsection[Search-Order word sets]{\remove{ed14}{Search-Order word sets}}
\remove{ed14}{No words have been added to \xref{wordlist:search}.}
%\stepcounter{subsection}
\subsection{String word sets}
The following words have been added to the \xref{wordlist:string-ext}:
......@@ -593,7 +613,7 @@ The following words have been added to the \xref{wordlist:string-ext}:
\end{minipage}
\html{<br class="clear" />}
\subsection{Extended Character word sets}
\subsection{Extended-Character word sets}
The Extended Character word set was introduced by Forth-\snapshot.
The following words make up \xref{wordlist:xchar}:
......
% !TeX root = forth.tex
\chapter{Documentation requirements}
\label{doc}
......@@ -169,7 +171,7 @@ combination of factors:
\item insufficient space in the dictionary;
\item interpretating a word with undefined interpretation semantics;
\item \replace{ed14}{interpretating}{ interpreting} a word with undefined interpretation semantics;
\item modifying the contents of the input buffer or a string literal
(\xref[Text-literal regions]{usage:"literal},
......
......@@ -78,7 +78,7 @@ See: \xref[3.4.4 Possible actions on an ambiguous condition]{usage:ambiguous}.
\throwdef{-1}{\word{ABORT}}
\throwdef{-2}{\word{ABORTq}}
\throwdef{-3}{stack overflow}
\throwdef{-4}{tack underflow}
\throwdef{-4}{\cbstart\uline{s}tack underflow\cbend}
\throwdef{-5}{return stack overflow}
\throwdef{-6}{return stack underflow}
\throwdef{-7}{do-loops nested too deeply during execution}
......
......@@ -10,6 +10,7 @@ None.
\section{Additional usage requirements} % 10.3
\subsection{Data types} % 10.3.1
Append table \ref{facility:types} to table \ref{table:datatypes}.
......@@ -399,7 +400,7 @@ to provide all of the Facility and Facility Extensions word sets.
\execute[name]
\stack{addr_1}{addr_2}
Add the \param{offset} calculated during the compile time action to
Add the \param{offset} calculated during the compile\place{ed14}{-}time action to
\param{addr_1} giving the address \param{addr_2}.
\see \wref{facility:+FIELD}{+FIELD},
......@@ -701,7 +702,7 @@ to provide all of the Facility and Facility Extensions word sets.
\execute[name]
\stack{addr_1}{addr_2}
Add the \param{offset} calculated during the compile time action
Add the \param{offset} calculated during the compile\place{ed14}{-}time action
to \param{addr_1} giving the address \param{addr_2}.
\see \wref{facility:+FIELD}{+FIELD},
......
......@@ -81,8 +81,8 @@ file names is implementation defined.
\subsection{Blocks in files} % 11.3.2
\label{file:blocks}
If the File-Access word set is implemented, the Block word set
shall be implemented. Blocks may, but need not, reside in files.
\remove{ed14}{If the File-Access word set is implemented, the Block word set
shall be implemented.} Blocks may, but need not, reside in files.
When they do:
\begin{itemize}
\item Block numbers may be mapped to one or more files by
......@@ -118,10 +118,19 @@ an environmental dependency. See:
\subsection{Other transient regions} % 11.3.5
\label{file:buffers}
\remove{X:interpret-escaped-s}{%
The list of words using memory in transient regions is extended to
include \wref{file:Sq}{S"}. See: \xref[3.3.3.6 Other transient
include \wref{file:Sq}{S"}. See:} \xref[3.3.3.6 Other transient
regions]{usage:transient}.
\place{X:interpret-escaped-s}{%
The system provides transient buffers for \word{Sq} and \word{Seq}
strings. These buffers shall be no less than 80 characters in length, and
there shall be at least two buffers. The system should be able to store
two strings defined by sequential use of \word{Sq} or \word{Seq}.
RAM-limited systems may have environmental restrictions on the number
of buffers and their lifetimes.}
\subsection{Parsing} % 11.3.6
\label{file:parsing}
......@@ -166,8 +175,8 @@ See: \xref[3.4.1 Parsing]{usage:parsing}.
\item maximum size of input line (\xref[11.3.6 Parsing]{file:parsing});
\item methods for mapping block ranges to files
(\xref[11.3.2 Blocks in files]{file:blocks});
\item number of string buffers provided (\wref{file:Sq}{S"});
\item size of string buffer used by \wref{file:Sq}{S"}.
\item number of string buffers provided (\replace{X:interpret-escape-s}{\wref{file:Sq}{S"}}{ \xref{file:buffers}});
\item size of string buffer used by \replace{X:interpret-escape-s}{\wref{file:Sq}{S"}}{ \xref{file:buffers}}.
\end{itemize}
\subsubsection{Ambiguous conditions} % 11.4.1.2
......@@ -259,6 +268,7 @@ provide all of the File Access and File Access Extensions word sets.
\subsection{File Access words} % 11.6.1
\enlargethispage{2ex}
\begin{worddef}[p]{0080}{(}[paren]
\item \stack{"ccc<paren>"}{}
......@@ -278,7 +288,7 @@ provide all of the File Access and File Access Extensions word sets.
\end{worddef}
\enlargethispage{2ex}
\enlargethispage{4ex}
\begin{worddef}{0765}{BIN}
\item \stack{fam_1}{fam_2}
......@@ -305,7 +315,7 @@ provide all of the File Access and File Access Extensions word sets.
\end{rationale}
\end{worddef}
\vspace*{-1ex}
\begin{worddef}{0900}{CLOSE-FILE}
\item \stack{fileid}{ior}
......@@ -313,7 +323,7 @@ provide all of the File Access and File Access Extensions word sets.
implementation-defined I/O result code.
\end{worddef}
\vspace*{-1ex}
\begin{worddef}{1010}{CREATE-FILE}
\item \stack{c-addr u fam}{fileid ior}
......@@ -351,7 +361,7 @@ provide all of the File Access and File Access Extensions word sets.
\end{testing}
\end{worddef}
\vspace*{-1ex}
\begin{worddef}{1190}{DELETE-FILE}
\item \stack{c-addr u}{ior}
......@@ -366,7 +376,7 @@ provide all of the File Access and File Access Extensions word sets.
\end{testing}
\end{worddef}
\vspace*{-1ex}
\begin{worddef}{1520}{FILE-POSITION}
\item \stack{fileid}{ud ior}
......@@ -375,7 +385,7 @@ provide all of the File Access and File Access Extensions word sets.
result code. \param{ud} is undefined if \param{ior} is non-zero.
\end{worddef}
\vspace*{-1ex}
\begin{worddef}{1522}{FILE-SIZE}
\item \stack{fileid}{ud ior}
......@@ -414,7 +424,6 @@ provide all of the File Access and File Access Extensions word sets.
\end{worddef}
\pagebreak
\begin{worddef}{1717}{INCLUDE-FILE}
\item \stack{i*x fileid}{j*x}
......@@ -653,7 +662,7 @@ provide all of the File Access and File Access Extensions word sets.
Implementations are allowed to store the line terminator in
the memory buffer in order to allow the use of line reading
functions provided by host operating systems, some of which
store the terminator. Without this provision, a temporary
store the terminator. Without this provision, a \replace{ed14}{temporary}{transient}
buffer might be needed. The two-character limitation is
sufficient for the vast majority of existing operating
systems. Implementations on host operating systems whose line
......@@ -788,11 +797,13 @@ provide all of the File Access and File Access Extensions word sets.
\stack{"ccc<quote>"}{c-addr u}
Parse \param{ccc} delimited by \texttt{"} (double quote). Store
the resulting string \param{c-addr u} at a temporary location.
the resulting string \replace{X:interpret-escape-s}{%
\param{c-addr u} at a temporary location.
The maximum length of the temporary buffer is
implementation-dependent but shall be no less than 80 characters.
Subsequent uses of \word{Sq} may overwrite the temporary buffer.
At least one such buffer shall be provided.
At least one such buffer shall be provided.}{ in a transient buffer
\param{c-addr u}.}
\compile
\stack{"ccc<quote>"}{}
......@@ -810,6 +821,8 @@ provide all of the File Access and File Access Extensions word sets.
\wref{core:Cq}{C"},
\wref{core:Sq}{S"},
\xref[11.3.5 Other transient regions]{file:buffers}, \\
\place{X:interpret-escape-s}{\wref{file:Seq}{},}
\xref{rat:file:buffers},
\rref{file:Sq}{}.
\begin{rationale} % A.11.6.1.2165 S"
......@@ -837,7 +850,8 @@ provide all of the File Access and File Access Extensions word sets.
\end{rationale}
\begin{testing}
\test{\word{Sq} A String"\word{2DROP}}{} \tab \word{bs} \textdf{There is no space between the " and \word{2DROP}}
\test{\word{Sq} A String"\word{2DROP}}{}
\tab \word{bs} \textdf{There is no space between the " and \word{2DROP}}
\end{testing}
\end{worddef}
......@@ -867,8 +881,7 @@ provide all of the File Access and File Access Extensions word sets.
\end{testing}
\end{worddef}
\enlargethispage{6ex}
\pagebreak
\begin{worddef}{2425}{W/O}[w-o]
\item \stack{}{fam}
......@@ -937,6 +950,7 @@ provide all of the File Access and File Access Extensions word sets.
\end{worddef}
\pagebreak
\begin{worddef}{1560}{FLUSH-FILE}
\item \stack{fileid}{ior}
......@@ -1050,7 +1064,7 @@ provide all of the File Access and File Access Extensions word sets.
\end{testing}
\end{worddef}
\enlargethispage{2ex}
\begin{worddef}{2144}[50]{REQUIRED}[][X:required]
\item \stack{i*x c-addr u}{i*x}
......@@ -1166,3 +1180,33 @@ provide all of the File Access and File Access Extensions word sets.
\end{testing}
\end{worddef}
\begin{worddef*}[Seq]{2266}{S\bs{"}}[s-backslash-quote][X:interpret-escape-s]
\item
\uline{Extend the semantics of \wref{core:Seq}{} to be:}
\interpret \stack{\uline{"ccc<quote>"}}{\uline{c-addr u}}
\uline{%
Parse \param{ccc} delimited by \texttt{"} (double quote) according to the
translation rules given in \wref{core:Seq}{}. Store the resulting string in a
transient buffer \param{c-addr u}.
}
\compile \stack{\uline{"ccc<quote>"}}{}
\uline{%
Parse \param{ccc} delimited by \texttt{"} (double quote) according to the
translation rules given in \wref{core:Seq}{}. Append the run-time semantics
given below to the current definition.
}
\runtime \stack{}{\uline{c-addr u}}
\uline{%
Return a string \param{c-addr u} describing the translation of \param{ccc}.
A program shall not alter the returned string.
}
\see \uline{\wref{core:Seq},} \xref[11.3.4 Transient String Buffers]{file:buffers},
\uline{\wref{file:Sq}{},} \xref[A.11.3.4 Transient String Buffers]{rat:file:buffers}.
\end{worddef*}
......@@ -60,6 +60,7 @@ Append table \ref{float:types} to table \ref{table:datatypes}.
\hline
\emph{df-addr} & double-float-aligned address & 1 cell \\
\emph{f-addr} & float-aligned address & 1 cell \\
\uline{\emph{r}}& \cbstart\uline{floating-point number}\cbend & \uline{implementation-defined} \\
\emph{sf-addr} & single-float-aligned address & 1 cell \\
\hline\hline
\end{tabular}
......@@ -830,7 +831,7 @@ word sets.
\execute[name]
\stack{addr_1}{addr_2}
Add the \param{offset} calculated during the compile time action to
Add the \param{offset} calculated during the compile\place{ed14}{-}time action to
\param{addr_1} giving the address \param{addr_2}.
\see \wref{facility:+FIELD}{+FIELD},
......@@ -893,7 +894,7 @@ word sets.
% ========== x:stoftos ==========
\begin{worddef}[FtoS]{1471}{F>S}[F to S][x:stoftos]
\begin{worddef}[FtoS]{1471}{F>S}[F to S][X:stoftos]
\item \stack{}{n} \stack[F]{r}{} or \stack{r}{n}
\param{n} is the single-cell signed-integer equivalent of the
......@@ -1297,7 +1298,7 @@ word sets.
\execute[name]
\stack{addr_1}{addr_2}
Add the \param{offset} calculated during the compile time action to
Add the \param{offset} calculated during the compile\place{ed14}{-}time action to
\param{addr_1} giving the address \param{addr_2}.
\see \wref{facility:+FIELD}{+FIELD},
......@@ -1434,7 +1435,7 @@ word sets.
% ---------------------------------------------------------
\vspace*{-0.5ex}
\begin{worddef}{1627}{FTRUNC}[f-trunc][x:ftrunc]
\begin{worddef}{1627}{FTRUNC}[f-trunc][X:ftrunc]
\item \stack[F]{r_1}{r_2} or \stack{r_1}{r_2}
Round \param{r_1} to an integral value using the ``round
......@@ -1573,7 +1574,7 @@ word sets.
% ========== x:stoftos ==========
\begin{worddef}[StoF]{2175}{S>F}[S to F][x:stoftos]
\begin{worddef}[StoF]{2175}{S>F}[S to F][X:stoftos]
\item \stack{n}{} \stack[F]{}{r} or \stack{n}{r}
\param{r} is the floating-point equivalent of the single-cell
......@@ -1670,7 +1671,7 @@ word sets.
\execute[name]
\stack{addr_1}{addr_2}
Add the \param{offset} calculated during the compile time action to
Add the \param{offset} calculated during the compile\place{ed14}{-}time action to
\param{addr_1} giving the address \param{addr_2}.
\see \wref{facility:+FIELD}{+FIELD},
......
......@@ -650,14 +650,15 @@
% special characters
\newcommand{\stack@sub}[1]{\raisebox{-0.4ex}{\scriptsize #1}} % _
\newcommand{\stack@sup}[1]{\raisebox{0.8ex}{\scriptsize #1}} % ^
\newcommand{\stack@mul}{\ensuremath{\mathbin\times}} % *
\newcommand{\stack@bar}{~\textbar~} % |
\newcommand{\stack@sup}[1]{\raisebox{0.8ex}{\scriptsize #1}} % ^
%\newcommand{\stack@mul}{\ensuremath{\mathbin\times}} % *
\newcommand{\stack@mul}{\,*\,} % *
\newcommand{\stack@bar}{~\textbar~} % |
\newcommand{\stack@opa}{\ensuremath{\langle}} % <
\newcommand{\stack@cla}{\ensuremath{\rangle}} % >
\newif\if@stack@quote\@stack@quotetrue
\newcommand{\stack@qot}{% % "
\newcommand{\stack@qot}{% % "
\if@stack@quote``\@stack@quotefalse\else''\@stack@quotetrue\fi}
% Now we have to activate the special characters we are going to
......@@ -665,11 +666,11 @@
% group so we don't screw up the rest of the system.
\begingroup
\catcode`\_=\active % Subscript: _1 or _{12}
\catcode`\*=\active % Multiply: 1*2
\catcode`\|=\active % Alternative: u|n
\catcode`\<=\active % Start text: <ccc>
\catcode`\>=\active % End text: <ccc>
\catcode`\_=\active % Subscript: _1 or _{12}
\catcode`\*=\active % Multiply: 1*2
\catcode`\|=\active % Alternative: u|n
\catcode`\<=\active % Start text: <ccc>
\catcode`\>=\active % End text: <ccc>
\catcode`\"=\active % Syntax element: "name"
% Because we are inside a simple group, we have to use \gdef rather
......@@ -701,7 +702,7 @@
% _x or _{xx} x or xx is a subscript
% x*y becomes x multiplied by y ($x\times y$)
% x|y becomes x or y ( x \textbar y )
% <xxx> becomes an argument <xxx>
% <xxx> becomes an argument <xxx>
% " becomes open or close double quote
%
% All other characters are typeset in italic.
......@@ -710,7 +711,7 @@
( % Mark the start of the signature
\ifx#1\empty\else #1: \fi % The stack name (if given)
\begingroup % Open a new restricted scope for new specials
\itshape % The signature is in italic
\itshape % The signature is in italic
\stack@set % Enable the specials
\stack@sig % Parse the signature parameters
% We have to do this in a separate macro as
......@@ -719,9 +720,9 @@
}
\newcommand{\stack@sig}[2]{% ...{<before>}{<after>}
#1\ % Pre-condition (before)
\texttt{-{}-} % Mark the "execution point"
\ #2 % Post-condition (after)
#1\ % Pre-condition (before)
--{\,}-- % Mark the "execution point"
\ #2 % Post-condition (after)
\endgroup % Close restricted scope
% Disable new specials and \itshape
) % Close stack signature
......@@ -735,13 +736,13 @@
\newcommand{\param}{% ...
\begingroup % Open a restricted scope for our specials
\itshape % A stack parameter is always given in italic
\itshape % A stack parameter is always given in italic
\stack@set % Enable the specials
\param@arg % Parse the parameter
}
\newcommand{\param@arg}[1]{% ...{<param>}
#1% % Parse the parameter with our specials enabled
#1% % Parse the parameter with our specials enabled
\endgroup % Close restricted scope, we don't want our
% specials buggering up anything else now do we,
% this also cancels the \itshape command
......
......@@ -61,7 +61,7 @@ language. With equivalent ease, one can also add new \emph{kinds} of
words. That is, one may create a word which itself will define
words. In creating such a defining word the programmer may specify
a specialized behavior for the words it will create which will be
effective at compile time, at run-time, or both. This capability
effective at compile\placed{ed14}{-}time, at run-time, or both. This capability
allows one to define specialized data types, with complete control
over both structure and behavior. Since the run-time behavior of
such words may be defined either in high-level or in code, the words
......@@ -469,7 +469,7 @@ significant to the text interpreter than any other character that
may be used in a definition name.
Such a definition has two parts, as there are two ``behaviors''
associated with this new word \texttt{2ARRAY}, one at compile time,
associated with this new word \texttt{2ARRAY}, one at compile\placed{ed14}{-}time,
and one at run or execute time. These are best understood if we look
at how \texttt{2ARRAY} is used to define its arrays, and then how the
array might be used in an application. In fact, this is how one would
......
......@@ -64,7 +64,8 @@ given here.
\impsection{search}{Search-Order} % I.16
\impsection{string}{String} % I.17
\section{The optional Extended Character wordset} % I.18
\section[The optional Extended-Character word set]{The optional Extended-Character \replace{ed14}{wordset}{ word set}} % I.18
\label{imp:xchar}
This reference implementation assumes the UTF-8 character encoding
is being used.
......
{\Large\bfseries
American National Standard for Information Systems --- \\[2pt]
Programming Language --- \\[2pt]
Forth
% !TeX root = forth.tex
{\Large\bfseries\cbstart\patch{ed14}
\sout{American National Standard for Information Systems ---} \\[2pt]
\sout{Programming Language ---} \\[2pt]
Forth \uline{\snapshot{} Standard}
\cbend
}
\chapter{Introduction}
\label{chap:intro}
\section{Purpose}
The purpose of this standard is to promote the portability of Forth
......@@ -61,6 +64,7 @@ sets, defined in sections \ref{wordlist:block} through
Standard Systems with tailored levels of functionality.
\subsubsection{Text sections}
\label{intro:numbering}
Within each word set, section 1 contains introductory and explanatory
material and section 2 introduces terms and notation used throughout
......@@ -70,12 +74,20 @@ Sections 3 and 4 contain the usage and documentation requirements,
respectively, for Standard Systems and Programs, while section 5
specifies their labeling.
\place{X:section-numbering}{%
Sections \emph{x}.1--\emph{x}.6 of each word set have the same
section numbering as sections 1--6 of the whole document to make
it easy to relate the sections to each other. This may lead to gaps in
section numbers if a particular section does not occur in a word set.
}
\subsubsection{Glossary sections}
Section 6 of each word set specifies the required behavior of the
definitions in the word set and the extensions word set.
\subsection{Annexes}
\label{intro:annex}
The annexes do not contain any required material.
......@@ -101,7 +113,7 @@ of a system complies with the definitions documented in this
standard.
\fi
Annex \ref{annex:index} is an index of all words defined in this
Annex \ref{annex:index} is an index of all \place{ed14}{Forth} words defined in this
standard.
\section{Future directions}
......@@ -124,15 +136,20 @@ as they may be withdrawn from future revisions of the standard.
This standard designates the following word as obsolescent:
\setwordlist{core}
\cbstart
\begin{tabular}{rl@{\qquad}rl@{\qquad}rl}
\ref{tools:FORGET} & \word[tools]{FORGET} \\
\uline{\ref{core:[COMPILE]}} & \uline{\word{[COMPILE]}} \\
\uline{\ref{local:LOCALS}} & \uline{\word[local]{LOCALS}}
\end{tabular}
\cbend
This standard designates the following practice as obsolescent:
\begin{itemize}
\item Requiring floating-point numbers to be kept on the data stack.
(This has always been an environmental dependency.)
\item \remove{X:fp-stack}{%
Requiring floating-point numbers to be kept on the data stack.
(This has always been an environmental dependency.)}
\item Using \word{ENVIRONMENTq} to enquire whether a word set is present.
\end{itemize}
......@@ -333,7 +333,7 @@ to provide all of the Locals and Locals Extensions word sets.
% -------------------------------------------------------------------
\begin{worddef}[b:]{2550}{\brace:}[brace-colon][x:enhanced-locals]
\begin{worddef}[b:]{2550}{\brace:}[brace-colon][X:enhanced-locals]
\interpret
Interpretation semantics for this word are undefined.
......@@ -388,7 +388,7 @@ to provide all of the Locals and Locals Extensions word sets.
Set \param{name} to the value \param{x}.
\see \xref[2.2 Notation]{notations},
\see \xref[2.2 Notation]{notation:BNF},
\wref{core:VALUE}{},
\wref{core:TO}{},
\rref{local:b:}{}.
......
......@@ -6,7 +6,6 @@ if x%1 == xdvi goto dvi
if x%1 == xps goto ps
if x%1 == xpdf goto process
if x%1 == xclean goto clean
if x%1 == xhtml goto dvi
if x%1 == xzip goto zip
rem Usage
......@@ -24,9 +23,7 @@ goto process
:process
title 1/5: Extract support files
%latex% \scrollmode\input forth.tex
rem perl sort.pl < forth.wrd > forth.wds
if x%1 == xhtml goto html
perl sort.pl < forth.wrd > forth.wds
title 2/5: Create Labels
%latex% forth
......@@ -46,11 +43,6 @@ if not exist forth.dvi goto dvi
dvips -K -t A4 forth
goto end
:html
rem Build the html version
htlatex forth
goto end
:zip
cd ..
zip -9 -r basis.zip basis -x \*CVS\* -x \*.pdf -x \*.zip
......@@ -79,20 +71,5 @@ rem forth.dvi LaTeX DVI output
goto end
rem Clean HTML files
rem forth.4ct ToC postfix
rem forth.4tc ToC prefix
rem forth.idv Fonts extract
rem forth.lg tex4th log file
rem forth.xref tex4th Cross references
rem forth*.tmp
for %%x in (4ct 4tc idv lg tmp xref) do if exist forth.%%x del forth.%%x
rem Keep the following:
rem forth*.png Graphics files
rem *.html HTML files
rem *.css HTML Style Sheets
:end
title Command prompt
......@@ -42,8 +42,10 @@ Currently the committee has the following voting members:
\member{Stephen Pelc} {\email{stephen@mpeforth.com}} {MicroProcessor Engineering Ltd.} {Southampton, UK}
\member{Dr.\ Willi Stricker} {\email{stricker\_w@t-online.de}} {Independent Member} {Springe, Germany}
\member{Leon Wagner} {\email{leon@forth.com}} {FORTH, Inc.} {Los Angeles, USA}
\member{Gerald Wodni} {\email{gerald.wodni@gee.at}} {GEE Solutions} {Wien, Austria}
\cbstart
\member{Gerald Wodni} {\email[-]{gerald.wodni@gee.at} \email[+]{gerald@wodni.at}} {\sout{GEE Solutions} \uline{Independent Member}} {Wien, Austria}
\cbend
The following organizations and individuals have also participated in
this project as committee members. The committee recognizes and
......@@ -54,6 +56,7 @@ respects their contributions:
\member{Carsten Strotmann} {\email{carsten@strotmann.de}} {Independent Member} {Neuenkirchen, Germany}
The committee would like to thank the following contributors:
\patch{ed14}
\begin{minipage}[t]{.3\linewidth}
John Hayes \\
......@@ -69,7 +72,8 @@ Krishna Myneni \\
\end{minipage}
\hfill
\begin{minipage}[t]{.3\linewidth}
Howard Oakford \\
How\cbstart\sout{a}\uline{e}\cbend rd Oakford \\
\cbstart\uline{Tim Partridge}\cbend \\
Elizabeth Rather \\
David N. Williams \\
\end{minipage}
\ No newline at end of file
% !TeX root = forth.tex
% !TeX spell = en_US
\chapter{Terms, notation, and references}
The phrase ``See:'' is used throughout this standard to direct the
......@@ -46,13 +49,18 @@ Depending on context, either
\item[ambiguous condition:]
A circumstance for which this standard does not prescribe a
specific behavior for Forth systems and programs.
specific behavior
\remove{ed14}{for Forth systems and programs}.
\place{ed14}{See section \xref[4.1.2]{doc:ambiguous}
for a list of such circumstances and
\xref[3.4.4]{usage:ambiguous}.}
\remove{ed14}{%
Ambiguous conditions include such things as the absence of a needed
delimiter while parsing, attempted access to a nonexistent file, or
attempted use of a nonexistent word. An ambiguous condition also
exists when a standard word is passed values that are improper or
out of range.