Commit eacba1de authored by pknaggs's avatar pknaggs

Remvoed 13.1 markup and added RC2 pagination

parent 9655f24e
......@@ -117,6 +117,7 @@
\end{worddef}
\pagebreak
\begin{worddef}{0070}{'}[tick]
\item \stack{"<spaces>name"}{xt}
......@@ -247,6 +248,7 @@
\end{worddef}
\pagebreak
\begin{worddef}{0110}{*/MOD}[star-slash-mod]
\item \stack{n_1 n_2 n_3}{n_4 n_5}
......@@ -427,6 +429,7 @@
\end{worddef}
\pagebreak
\begin{worddef}{0150}{,}[comma]
\item \stack{x}{}
......@@ -553,6 +556,7 @@
\end{worddef}
\enlargethispage{4ex}
\begin{worddef}{0230}{/}[slash]
\item \stack{n_1 n_2}{n_3}
......@@ -1130,6 +1134,7 @@
\end{worddef}
\enlargethispage{6ex}
\begin{worddef}[toR]{0580}{>R}[to-r]
\interpret
Interpretation semantics for this word are undefined.
......@@ -1269,7 +1274,7 @@
special behavior. Insofar as such behavior is outside the
standard, Standard Programs cannot depend upon it, but the
committee doesn't wish to preclude it unnecessarily.
\replace{ed13}{Since}{ Because} actual values are almost always small integers, no
Because actual values are almost always small integers, no
functionality is impaired by this restriction.
It is recommended that all non-graphic characters be reserved
......@@ -1465,6 +1470,7 @@
\end{worddef}
\enlargethispage{6ex}
\begin{worddef}{0770}{BL}[b-l]
\item \stack{}{char}
......@@ -1725,6 +1731,7 @@
\end{worddef}
\vspace*{-0.5ex}
\begin{worddef}{1000}{CREATE}
\item \stack{"<spaces>name"}{}
......@@ -1766,6 +1773,7 @@
\end{worddef}
\vspace*{-0.5ex}
\begin{worddef}{1170}{DECIMAL}
\item \stack{}{}
......@@ -1777,6 +1785,7 @@
\end{worddef}
\vspace*{-0.5ex}
\begin{worddef}{1200}{DEPTH}
\item \stack{}{+n}
......@@ -1790,7 +1799,8 @@
\end{testing}
\end{worddef}
\vspace*{-0.5ex}
\enlargethispage{10ex}
\begin{worddef}{1240}{DO}
\interpret
Interpretation semantics for this word are undefined.
......@@ -1803,6 +1813,7 @@
semantics are incomplete until resolved by a consumer of
\param{do-sys} such as \word{LOOP}.
%\pagebreak
\runtime
\stack{n_1|u_1 n_2|u_2}{}
\stack[R]{}{loop-sys}
......@@ -1951,6 +1962,7 @@
\end{worddef}
\pagebreak
\begin{worddef}{1310}{ELSE}
\interpret
Interpretation semantics for this word are undefined.
......@@ -2073,6 +2085,7 @@
\end{worddef}
\pagebreak
\begin{worddef}{1360}{EVALUATE}
\item \stack{i*x c-addr u}{j*x}
......@@ -2173,6 +2186,7 @@
\end{worddef}
\enlargethispage{10ex}
\begin{worddef}{1550}{FIND}
\item \stack{c-addr}{c-addr 0 | xt 1 | xt -1}
......@@ -2356,6 +2370,7 @@
\end{worddef}
\enlargethispage{4ex}
\begin{worddef}{1650}{HERE}
\item \stack{}{addr}
......@@ -2649,7 +2664,7 @@
\end{worddef}
\pagebreak
\begin{worddef}{1760}{LEAVE}
\interpret
Interpretation semantics for this word are undefined.
......@@ -2691,6 +2706,7 @@
\end{worddef}
\enlargethispage{4ex}
\begin{worddef}{1780}{LITERAL}
\interpret
Interpretation semantics for this word are undefined.
......@@ -2977,6 +2993,7 @@
\end{worddef}
\enlargethispage{8ex}
\begin{worddef}{1910}{NEGATE}
\item \stack{n_1}{n_2}
......@@ -3139,6 +3156,7 @@
\end{worddef}
\enlargethispage{8ex}
\begin{worddef}[Rfrom]{2060}{R>}[r-from]
\interpret
Interpretation semantics for this word are undefined.
......@@ -3334,6 +3352,7 @@
\end{worddef}
\enlargethispage{4ex}
\begin{worddef}[Sq]{2165}{S"}[s-quote]
\interpret
Interpretation semantics for this word are undefined.
......@@ -3782,6 +3801,7 @@
\end{worddef}
\pagebreak
\begin{worddef}{2380}{UNLOOP}
\interpret
Interpretation semantics for this word are undefined.
......@@ -3899,6 +3919,7 @@
\end{worddef}
\pagebreak
\begin{worddef}{2430}{WHILE}
\interpret
Interpretation semantics for this word are undefined.
......@@ -4163,6 +4184,7 @@
%\end{worddef}
\enlargethispage{6ex}
\begin{worddef}[.p]{0200}{.(}[dot-paren]
\compile
Perform the execution semantics given below.
......@@ -4272,6 +4294,7 @@
\end{worddef}
\pagebreak
\begin{worddef}{0415}{2R@}[two-r-fetch]
\interpret
Interpretation semantics for this word are undefined.
......@@ -4394,7 +4417,7 @@
\begin{rationale} % A.6.2.0620 ?DO
Typical use:
\tab \place{ed13}{\word{:} \texttt{X} {\ldots}} \word{qDO} {\ldots} \word{LOOP} \place{ed13}{{\ldots} \word{;}}
\tab \word{:} \texttt{X} {\ldots} \word{qDO} {\ldots} \word{LOOP} {\ldots} \word{;}
\end{rationale}
\begin{testing}\ttfamily
......@@ -4552,7 +4575,7 @@
% -------------------------------------------------------------------
\enlargethispage{6ex}
\begin{worddef}{0825}{BUFFER:}[buffer-colon][x:buffer]
\item \stack{u "<spaces>name"}{}
......@@ -4755,6 +4778,7 @@
\end{worddef}
\pagebreak
\begin{worddef}{0945}{COMPILE,}[compile-comma]
\interpret
Interpretation semantics for this word are undefined.
......@@ -4769,18 +4793,13 @@
\see \rref{core:COMPILE,}{}.
\begin{rationale} % A.6.2.0945 COMPILE,
\cbstart\patch{ed13}
\uline{\word{COMPILE,} is the compilation equivalent of
\word{EXECUTE}.}
\word{COMPILE,} is the compilation equivalent of \word{EXECUTE}.
\uline{%
In traditional threaded-code implementations, compilation is
performed by \word{,} (comma). This usage is not portable; it
doesn't work for subroutine-threaded, native code, or
relocatable implementations. Use of \word{COMPILE,} is portable.
}
\uline{%
In most systems it is possible to implement \word{COMPILE,} so
it will generate code that is optimized to the same extent as
code that is generated by the normal compilation process.
......@@ -4792,7 +4811,6 @@
the compilation token from the execution token. In these
implementations, \word{COMPILE,} might not generate code that
is as efficient as normally compiled code.
}
The intention is that \word{COMPILE,} can be used as follows to write
the classic interpreter/com\-piler loop:
......@@ -4817,28 +4835,6 @@
Thus the interpretation semantics are left undefined, as \word{COMPILE,}
will not be executed during interpretation.
\sout{%
In traditional threaded-code implementations, compilation is
performed by \word{,} (comma). This usage is not portable; it
doesn't work for subroutine-threaded, native code, or
relocatable implementations. Use of \word{COMPILE,} is portable.
}
\sout{%
In most systems it is possible to implement \word{COMPILE,} so
it will generate code that is optimized to the same extent as
code that is generated by the normal compilation process.
However, in some implementations there are two different
``tokens'' corresponding to a particular definition name:
the normal ``execution token'' that is used while interpreting
or with \word{EXECUTE}, and another ``compilation token'' that
is used while compiling. It is not always possible to obtain
the compilation token from the execution token. In these
implementations, \word{COMPILE,} might not generate code that
is as efficient as normally compiled code.
}
\cbend
\end{rationale}
\begin{testing}\ttfamily
......@@ -4977,6 +4973,7 @@
\end{worddef}
\pagebreak
\begin{worddef}{1342}{ENDCASE}[end-case]
\interpret
Interpretation semantics for this word are undefined.
......@@ -5155,6 +5152,7 @@
% ===================================================================
\enlargethispage{2ex}
\begin{worddef}{1725}{IS}[][X:deferred]
\interpret
\stack{xt "<spaces>name"}{}
......@@ -5239,6 +5237,7 @@
system to remember ``landmark information'' in advance that
specifically marks the spots where the dictionary may at some
future time have to be rearranged.
\pagebreak
\end{rationale}
\end{worddef}
......@@ -5400,12 +5399,6 @@
\item The temporary buffer is typically overwritten by the
next use of \word{WORD}.
\remove{ed13}{This introduces a temporal
dependency; the value returned by \word{WORD} is only
valid for a limited duration. \word{PARSE} has a
temporal dependency, too, related to the lifetime of
the input buffer, but that is less severe in most
cases than \word{WORD}'s temporal dependency.}
\end{enumerate}
The need for \word{WORD} has largely been eliminated by
......@@ -5593,19 +5586,19 @@
the character after the backslash is case sensitive:
\begin{tabular}{llll}
\verb|\a| & BEL & (alert, & ASCII 7) \\
\verb|\b| & BS & (backspace, & ASCII 8) \\
\verb|\e| & ESC & (escape, & ASCII 27) \\
\verb|\f| & FF & (form feed, & ASCII 12) \\
\verb|\l| & LF & (line feed, & ASCII 10) \\
\verb|\m| & CR/LF & pair & (ASCII 13, 10) \\
\verb|\n| & newline& \multicolumn{2}{l}{(implementation dependent , e.g., CR/LF, CR, LF, LF/CR)} \\
\verb|\q| & \multicolumn{2}{l}{double-quote} & (ASCII 34) \\
\verb|\r| & CR & (carriage return, & ASCII 13) \\
\verb|\t| & HT & (horizontal tab, & ASCII 9) \\
\verb|\v| & VT & (vertical tab, & ASCII 11) \\
\verb|\z| & NUL & (no character, & ASCII 0) \\
\verb|\"| & \multicolumn{2}{l}{double-quote} & (ASCII 34) \\
\verb|\a| & BEL & (alert, & ASCII 7) \\
\verb|\b| & BS & (backspace, & ASCII 8) \\
\verb|\e| & ESC & (escape, & ASCII 27) \\
\verb|\f| & FF & (form feed, & ASCII 12) \\
\verb|\l| & LF & (line feed, & ASCII 10) \\
\verb|\m| & CR/LF & pair & (ASCII 13, 10) \\
\verb|\n| & newline & \multicolumn{2}{l}{(implementation dependent , e.g., CR/LF, CR, LF, LF/CR)} \\
\verb|\q| & \multicolumn{2}{l}{double-quote} & (ASCII 34) \\
\verb|\r| & CR & (carriage return, & ASCII 13) \\
\verb|\t| & HT & (horizontal tab, & ASCII 9) \\
\verb|\v| & VT & (vertical tab, & ASCII 11) \\
\verb|\z| & NUL & (no character, & ASCII 0) \\
\verb|\"| & \multicolumn{2}{l}{double-quote} & (ASCII 34) \\
\multicolumn{3}{l}{\texttt{\bs{}x}\arg{hexdigit}\arg{hexdigit}} \\
&&\multicolumn{2}{p{27em}}{
The resulting character is the conversion of these two hexadecimal
......@@ -5750,6 +5743,7 @@
These are examples only; a Standard Program may not assume any
particular meaning for the individual stack items returned by
\word{SAVE-INPUT}.
\pagebreak
\end{rationale}
\begin{testing}\ttfamily
......@@ -5911,7 +5905,7 @@
a mode flag that is tested by the subsequent execution of
\param{name}. Standard programs must use \word{TO} as if it
parses. Therefore \word{TO} and \param{name} must be
contiguous \replace{ed13}{,}{ and} on the same line\remove{ed13}{,} in the source text.
contiguous and on the same line in the source text.
\end{rationale}
\begin{testing} % T.6.2.2295 TO
......@@ -5920,6 +5914,7 @@
\end{worddef}
\enlargethispage{6ex}
\begin{worddef}{2298}{TRUE}
\item \stack{}{true}
......
......@@ -100,13 +100,12 @@ implementations, especially those with substantial user bases and/or
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.
\place{ed13}{%
This was the most comprehensive review of Forth systems to date, taking
eighty seven days covering twenty 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.
}
The committee chose to move away from prescribing stringent requirements
as previous standards had, with the specification of a virtual machine.
......@@ -119,18 +118,10 @@ This required the identification of implicit assumptions made by the
previous standards, making them explicit and abstracting them into
more general concepts where possible. A good example of this is the
size of an item on the stack. In previous standards this was assumed
to be 16\remove{ed13}{-}bits wide. This was no longer a valid assumption. ANS Forth
introduced the concept of the \emph{cell}, allowing \replace{ed13}{the} an implementation
to be 16 bits wide. This was no longer a valid assumption. ANS Forth
introduced the concept of the \emph{cell}, allowing an implementation
to use a stack size most suited to the environment.
\remove{ed13}{%
This was the most comprehensive review of Forth systems to date, taking
eighty seven days covering twenty 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 comparability layer.
}
The American National Standards Institution (ANSI) published the ANS
Forth Standard in 1994 with the title ``\emph{ANSI X3.215-1994
Information Systems --- Programming Language FORTH}''. This is referenced
......@@ -152,7 +143,7 @@ Information technology. Programming languages. FORTH}''.
\label{diff:approach}
During a workshop on the Forth standard at the EuroForth conference in
2004 it was agreed that \remove{ed13}{the} Forth 94 required updating.
2004 it was agreed that Forth 94 required updating.
A committee was formed and agreed that the process should be as open
as possible, adopting the Usenet RfD/CfV (Request for Discussion/Call
......@@ -182,179 +173,154 @@ See \xref[Process]{process} (page \pageref{process}) for a full description.
\section{Differences from Forth 94} % D.7
\label{diff:forth94}
\cbstart\patch{x:obsolete}
\subsection{Removed Obsolete Words} % D.7.1
\label{diff:ans:obsolete}
\sout{This standard removes six words that were marked `obsolescent'
in the Forth 94 document. These are:}
\begin{tabular}{rl@{\qquad}rl@{\qquad}rl}
\sout{6.2.0060} & \sout{\textbf{\#TIB}}
& \sout{6.2.1390} & \sout{\textbf{EXPECT}}
& \sout{6.2.2240} & \sout{\textbf{SPAN}} \\
\sout{6.2.0970} & \sout{\textbf{CONVERT}}
& \sout{6.2.2040} & \sout{\textbf{QUERY}}
& \sout{6.2.2290} & \sout{\textbf{TIB}} \\
\end{tabular}
\uline{%
Forth 94 declared seven words as `obsolescent', all but \word[tools]{FORGET} have
been removed from this standard.}
Forth 94 declared seven words as `obsolescent', all but
\word[tools]{FORGET} have been removed from this standard.
\begin{description}
\item[\uline{Words affected:}] ~\\
\uline{\texttt{\#TIB},
\item[Words affected:] ~\\
\texttt{\#TIB},
\texttt{CONVERT},
\texttt{EXPECT},
\texttt{QUERY},
\texttt{SPAN},
\texttt{TIB},
\word{WORD}.}
\word{WORD}.
\item[\uline{Reason:}] ~\\
\uline{Obsolescent words have been removed.}
\item[Reason:] ~\\
Obsolescent words have been removed.
\item[\uline{Impact:}] ~\\
\uline{\word{WORD} is no longer required to leave a space at the
end of the returned string.}
\item[Impact:] ~\\
\word{WORD} is no longer required to leave a space at the end of
the returned string.
\uline{It is recommended that, should the obsolete words be included,
they have the behaviour described in Forth 94. The names should not
be reused for other purposes.}
It is recommended that, should the obsolete words be included,
they have the behaviour described in Forth 94. The names should
not be reused for other purposes.
\item[\uline{Transition/Conversion:}] ~\\
\uline{The functions of \texttt{TIB} and \texttt{\#TIB} have been
superseded by \word{SOURCE}.}
\item[Transition/Conversion:] ~\\
The functions of \texttt{TIB} and \texttt{\#TIB} have been
superseded by \word{SOURCE}.
\uline{The function of \texttt{CONVERT} has been superseded by
\word{toNUMBER}.}
The function of \texttt{CONVERT} has been superseded by
\word{toNUMBER}.
\uline{The functions of \texttt{EXPECT} and \texttt{SPAN} have
been superseded by \word{ACCEPT}.}
The functions of \texttt{EXPECT} and \texttt{SPAN} have been
superseded by \word{ACCEPT}.
\uline{The function of \texttt{QUERY} may be performed with
\word{ACCEPT} and \word{EVALUATE}.}
The function of \texttt{QUERY} may be performed with \word{ACCEPT}
and \word{EVALUATE}.
\end{description}
\patch{x:fp-stack}
\subsection[Obsolescent features]{\sout{Obsolescent features}} % D.7.2
\label{diff:94:obsolete}
\sout{This standard has designated the following practice as obsolescent:}
\begin{itemize}
\item \sout{Requiring floating-point numbers to be kept on the data stack.
(This has always been an environmental dependency.)}
\item \sout{Using \word{ENVIRONMENTq} to enquire whether a word set is present.}
\end{itemize}
\subsection[Combined Floating-point/Data Stack Obsolescent]{\uline{Combined Floating-point/Data Stack Obsolescent}} % D.7.2
\subsection{Combined Floating-point/Data Stack Obsolescent} % D.7.2
\label{diff:fpstack}
\uline{The requirement for floating-point numbers to be kept on the data 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.
\begin{description}
\item[\uline{Words Affected:}] ~\\
\uline{All floating-point words.}
\item[Words Affected:] ~\\
All floating-point words.
\item[\uline{Reason:}] ~\\
\uline{The developing of software that may be used with either a combined
\item[Reason:] ~\\
The developing of software that may be used with either a combined
stack or a separate stack is extremely difficult and costly. While
some of the systems surveyed provide a combined floating-point/data
stack, they all provide a separate floating-point stack.}
stack, they all provide a separate floating-point stack.
\item[\uline{Impact:}] ~\\
\uline{Forth 94 programs with an environmental dependency on a separate
floating-point stack become standard programs.}
\item[Impact:] ~\\
Forth 94 programs with an environmental dependency on a separate
floating-point stack become standard programs.
\uline{Forth 94 programs with an environmental dependency on a combined
stack retain the environmental dependency.}
Forth 94 programs with an environmental dependency on a combined
stack retain the environmental dependency.
\uline{Forth 94 programs (without environmental dependency, i.e., those
working on either kind of system) remain standard programs.}
Forth 94 programs (without environmental dependency, i.e., those
working on either kind of system) remain standard programs.
\uline{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.}
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.
\uline{Forth 94 systems that implement a combined stack become systems
Forth 94 systems that implement a combined stack become systems
with an environmental restriction of not providing a separate
floating-point stack, but a combined stack.}
floating-point stack, but a combined stack.
\item[\uline{Transition/Conversion:}] ~\\
\uline{Any code that has an environmental dependency on the use of a
combined floating-point/data stack should be ported to use a separate
floating-point stack.}
\item[Transition/Conversion:] ~\\
Any code that has an environmental dependency on the use of a
combined floating-point/data stack should be ported to use a
separate floating-point stack.
\uline{A system that has an environmental restriction on using a
combined floating-point/data stack should consider providing a separate
floating-point stack.}
A system that has an environmental restriction on using a combined
floating-point/data stack should consider providing a separate
floating-point stack.
\end{description}
\patch{x:environment}
\subsection[Using \word{ENVIRONMENT?} to inquire whether a word set is present.]{\uline{Using \word{ENVIRONMENT?} to inquire whether a word set is present.}} % D.7.3
\subsection[Using ENVIRONMENT? to inquire whether a word set is present]{Using \word{ENVIRONMENT?} to inquire whether a word set is present} % D.7.3
\label{diff:environment}
\uline{With the advent of a new standard, it was necessary to review the meaning
of word set queries. Compatibility with Forth 94 demands that a word set
query produce the same result as for Forth 94; i.e., querying for
\texttt{CORE-EXT} returns true only if all the Forth 94 CORE EXT words
are present. The question was how to distinguish between word sets
described by this and subsequent standards.}
With the advent of a new standard, it was necessary to review the
meaning of word set queries. Compatibility with Forth 94 demands
that a word set query produce the same result as for Forth 94; i.e.,
querying for \texttt{CORE-EXT} returns true only if all the Forth 94
CORE EXT words are present. The question was how to distinguish
between word sets described by this and subsequent standards.
\uline{The committee considered adding a year indicator to the word set name
The committee considered adding a year indicator to the word set name
(``\texttt{CORE-EXT-\snapshot}'') or a providing a general query
(``\texttt{Forth-\snapshot}'') which could be combined with the
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.}
mechanism, but rather to mark it as obsolescent.
\pagebreak
\begin{description}
\item[\uline{Words Affected:}] ~\\
\uline{\word{ENVIRONMENT?}}
\item[Words Affected:] ~\\
\word{ENVIRONMENT?}
\item[\uline{Reason:}] ~\\
\uline{The use of the word-set query to inquire whether a word set is
present in the system has been marked obsolescent. If present the
query indicates the word set, as documented in Forth 94, is available.}
\item[Reason:] ~\\
The use of the word-set query to inquire whether a word set is
present in the system has been marked obsolescent. If present
the query indicates the word set, as documented in Forth 94, is
available.
\item[\uline{Impact:}] ~\\
\uline{Forth 94 did not guarantee the presence of these queries. Many
systems that provided all the words in a particular word set did not
provide the corresponding query. Portable programs are not affected
as they could not rely on this function.}
\item[Impact:] ~\\
Forth 94 did not guarantee the presence of these queries. Many
systems that provided all the words in a particular word set did
not provide the corresponding query. Portable programs are not
affected as they could not rely on this function.
\item[Transition/Conversion:] ~\\
\uline{There is no direct equivalent to determine the presence of a whole
There is no direct equivalent to determine the presence of a whole
word set. The \wref{tools:[DEFINED]}{} and \wref{tools:[UNDEFINED]}{}
words can be used to detect the availability (or otherwise) of individual
words.}
words can be used to detect the availability (or otherwise) of
individual words.
\end{description}
\patch{x:to}
\subsection[Additional \word{TO} targets]{\uline{Additional \word{TO} targets}} % D.7.4
\subsection[Additional TO targets]{Additional \word{TO} targets} % D.7.4
\label{diff:12:to}
\uline{\wref{core:TO}{TO} has been extended to act on targets defined with
\wref{floating:FVALUE}{} and \wref{double:2VALUE}{}.}
\wref{core:TO}{TO} has been extended to act on targets defined with
\wref{floating:FVALUE}{} and \wref{double:2VALUE}{}.
\begin{description}
\item[\uline{Words affected:}] ~\\
\uline{\word{TO}}
\item[Words affected:] ~\\
\word{TO}
\end{description}
\patch{x:throw-iors}
\subsection[Input/Output return values]{\uline{Input/Output return values}} % D.7.5
\subsection{Input/Output return values} % D.7.5
\label{diff:12:ior}
\begin{description}
\item[\uline{Words affected:}] ~\\
\uline{All words that return an \param{ior}.}
\item[Words affected:] ~\\
All words that return an \param{ior}.
% \word[memory]{ALLOCATE},
% \word{CLOSE-FILE},
% \word{CREATE-FILE},
......@@ -374,93 +340,89 @@ mechanism, but rather to mark it as obsolescent.}
% \word{WRITE-FILE},
% \word{WRITE-LINE}.
\item[\uline{Reason:}] ~\\
\uline{Forth 94 left the error code (\param{ior}) implementation-defined,
\item[Reason:] ~\\
Forth 94 left the error code (\param{ior}) implementation-defined,
although it did recommend an \param{ior} to be a \word[exception]{THROW}
code. Forth 2012 now requires an \param{ior} to be a
\word[exception]{THROW} code.}
\word[exception]{THROW} code.
\item[\uline{Transition/Conversion:}] ~\\
\uline{Forth 94 programs are not affected. Programs that are dependent
on \param{iors} being throwable are no longer required to document the
dependency.}
\uline{Forth 94 systems that abided by the recommendation are not
affected. Systems that did not heed this advice are required to do so.
A number of \word[exception]{THROW} codes were added to table
\ref{table:throw} to ease this transition.}
\item[Transition/Conversion:] ~\\
Forth 94 programs are not affected. Programs that are dependent
on \param{iors} being throwable are no longer required to document
the dependency.
Forth 94 systems that abided by the recommendation are not affected.
Systems that did not heed this advice are required to do so. A
number of \word[exception]{THROW} codes were added to table
\ref{table:throw} to ease this transition.
\end{description}
\patch{x:local}
\subsection[Minimum number of locals]{\uline{Minimum number of locals}} % D.7.6
\subsection{Minimum number of locals} % D.7.6
\label{diff:12:locals}
\begin{description}
\item[\uline{Words affected:}] ~\\
\uline{\word[local]{LOCAL}, \word[local]{LOCALS}}
\item[Words affected:] ~\\
\word[local]{LOCAL}, \word[local]{LOCALS}
\item[\uline{Reason:}] ~\\
\uline{Some programs require more than eight locals.}
\item[Reason:] ~\\
Some programs require more than eight locals.
\item[\uline{Transition/Conversion:}] ~\\
\uline{Existing programs are unaffected. Systems implementing the locals
wordset have to be changed to support at least 16 (previously 8) locals.}
\item[Transition/Conversion:] ~\\
Existing programs are unaffected. Systems implementing the locals
wordset have to be changed to support at least 16 (previously 8)
locals.
\end{description}
\patch{x:prefix}
\subsection[Number prefixes]{\uline{Number prefixes}} % D.7.7
\subsection{Number prefixes} % D.7.7
\label{diff:12:prefix}
\uline{Decimal, hexadecimal, binary number literals can now be written
Decimal, hexadecimal, binary number literals can now be written
irrespective of BASE by using the prefix \#, \$, \%. Also, character
literals can be written as 'c'.}
literals can be written as 'c'.
\uline{Standard programs are unaffected. Systems have to be changed to
recognize these forms.}
Standard programs are unaffected. Systems have to be changed to
recognize these forms.
\uline{See} \xref[3.4.1.3]{usage:numbers}
See \xref[3.4.1.3]{usage:numbers}.
\patch{x:source-id}
\subsection[SOURCE-ID Clarification]{\uline{\word{SOURCE-ID} Clarification}} % D.7.7
\subsection[SOURCE-ID Clarification]{\word{SOURCE-ID} Clarification} % D.7.7
\label{diff:12:sourceid}
\uline{%
When interpreting text from a file, the relationship between the position in the
file returned by \word{SOURCE-ID}, and the current interpretation position is
undefined.}
undefined.
\patch{x:FASINH}
\subsection[FASINH]{\uline{\word[floating]{FASINH}}} % D.7.9
\subsection[FASINH]{\word[floating]{FASINH}} % D.7.9
\label{diff:12:fasinh}
\uline{An ambiguous condition on \param{r1} being less than 0 was removed.}
An ambiguous condition on \param{r1} being less than 0 was removed.