diff.tex 20.8 KB
Newer Older
pknaggs's avatar
pknaggs committed
1
% !TeX root = forth.tex
pknaggs's avatar
pknaggs committed
2
% !TeX spellcheck = en_US
pknaggs's avatar
pknaggs committed
3
\annex{Compatibility analysis} % D (informative annex)
4
\label{annex:diff}
5 6
\setwordlist{core}

pknaggs's avatar
pknaggs committed
7
Before this standard, there were several industry standards for Forth.
8
The most influential are listed here in chronological order, along
9
with the major differences between this standard and the most recent,
pknaggs's avatar
pknaggs committed
10
Forth 94.
11 12 13 14 15 16 17

\section{FIG Forth (circa 1978)} % D.1

FIG Forth was a ``model'' implementation of the Forth language
developed by the Forth Interest Group (FIG). In FIG Forth, a
relatively small number of words were implemented in processor-dependent
machine language and the rest of the words were implemented in Forth.
18 19
The FIG model was placed in the public domain, and was ported to a wide
variety of computer systems. Because the bulk of the FIG Forth
20 21
implementation was the same across all machines, programs written in
FIG Forth enjoyed a substantial degree of portability, even for
22 23
``system-level'' programs that directly manipulate the internals
of the Forth system implementation.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80

FIG Forth implementations were influential in increasing the number
of people interested in using Forth. Many people associate the
implementation techniques embodied in the FIG Forth model with
``the nature of Forth''.

However, FIG Forth was not necessarily representative of commercial
Forth implementations of the same era. Some of the most successful
commercial Forth systems used implementation techniques different
from the FIG Forth ``model''.


\section{Forth 79} % D.2

The Forth-79 Standard resulted from a series of meetings from 1978
to 1980, by the Forth Standards Team, an international group of Forth
users and vendors (interim versions known as Forth 77 and Forth 78
were also released by the group).

Forth 79 described a set of words defined on a 16-bit, twos-complement,
unaligned, linear byte-addressing virtual machine. It prescribed an
implementation technique known as ``indirect threaded code'', and used
the ASCII character set.

The Forth-79 Standard served as the basis for several public domain
and commercial implementations, some of which are still available and
supported today.


\section{Forth 83} % D.3

The Forth-83 Standard, also by the Forth Standards Team, was released
in 1983. Forth 83 attempted to fix some of the deficiencies of Forth
79.

Forth 83 was similar to Forth 79 in most respects. However, Forth 83
changed the definition of several well-defined features of Forth 79.
For example, the rounding behavior of integer division, the base value
of the operands of \word{PICK} and \word{ROLL}, the meaning of the
address returned by \word{'}, the compilation behavior of \word{'},
the value of a ``true'' flag, the meaning of \texttt{NOT}, and the
``chaining'' behavior of words defined by \texttt{VOCABULARY} were all
changed. Forth 83 relaxed the implementation restrictions of Forth 79
to allow any kind of threaded code, but it did not fully allow
compilation to native machine code (this was not specifically prohibited,
but rather was an indirect consequence of another provision).

Many new Forth implementations were based on the Forth-83 Standard, but
few ``strictly compliant'' Forth-83 implementations exist.

Although the incompatibilities resulting from the changes between
Forth 79 and Forth 83 were usually relatively easy to fix, a number
of successful Forth vendors did not convert their implementations to
be Forth 83 compliant. For example, the most successful commercial
Forth for Apple Macintosh computers is based on Forth 79.


pknaggs's avatar
pknaggs committed
81
\section{ANS Forth (1994)} % D.5
pknaggs's avatar
pknaggs committed
82
\label{diff:ans}
83

84
In the mid to late 1980s the computer industry underwent a rapid and
pknaggs's avatar
pknaggs committed
85
profound change.  The personal-computer market matured into a business
86 87 88
and commercial market, while the market for ROM-based embedded control
computers grew substantially.  Improvements in custom processor design
allowed for the de\-vel\-op\-ment of numerous ``Forth chips,'' customized
pknaggs's avatar
pknaggs committed
89
for the execution of the Forth language.
90 91 92 93 94 95

In order to take full advantage of evolving technology, many Forth
implementations ignored some of the restrictions imposed by the
implied ``virtual machine'' of previous standards.
The ANS Forth committee was formed in 1987 to address the fragmentation
within the Forth community caused not only by the difference between
pknaggs's avatar
pknaggs committed
96
Forth 79 and Forth 83 but the exploitation of technical developments.
97 98 99 100 101

The committee undertook a comprehensive review of a variety of existing
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
pknaggs's avatar
pknaggs committed
102 103
included in any previous standard.
This was the most comprehensive review of Forth systems to date, taking
pknaggs's avatar
pknaggs committed
104
eighty-seven days covering twenty-three meetings over eight years.
pknaggs's avatar
pknaggs committed
105 106 107
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.
108

109 110 111 112 113 114

The committee chose to move away from prescribing stringent requirements
as previous standards had, with the specification of a virtual machine.
It preferred to describe the operation of the virtual machine, without
reference to its implementation, thus allowing an implementor to take
full advantage of any technical developments while providing the
pknaggs's avatar
pknaggs committed
115
developer with a complete list of entitlements.
116 117 118 119 120

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
121 122
to be 16 bits wide.  This was no longer a valid assumption.  ANS Forth
introduced the concept of the \emph{cell}, allowing an implementation
pknaggs's avatar
pknaggs committed
123
to use a stack size most suited to the environment.
124 125 126

The American National Standards Institution (ANSI) published the ANS
Forth Standard in 1994 with the title ``\emph{ANSI X3.215-1994
pknaggs's avatar
pknaggs committed
127
Information Systems --- Programming Language FORTH}''.  This is referenced
pknaggs's avatar
pknaggs committed
128
throughout this document as Forth 94.
pknaggs's avatar
pknaggs committed
129

pknaggs's avatar
pknaggs committed
130
\section{ISO Forth (1997)}
pknaggs's avatar
pknaggs committed
131 132 133 134 135 136 137 138 139
\label{diff:iso}

ANSI submitted the Forth 94 Standard to the
ISO (International Organization for Standardization) and
IEC (International Electrotechnical Commission) joint committee for
consideration as an international standard.
The ISO/IEC adopted the Forth 94 document as an international standard
in 1997, publishing it under the title ``\emph{ISO/IEC 15145:1997
Information technology.  Programming languages.  FORTH}''.
140 141


pknaggs's avatar
pknaggs committed
142
\section{Approach of this standard} % D.6
143
\label{diff:approach}
pknaggs's avatar
pknaggs committed
144

145
During a workshop on the Forth standard at the EuroForth conference in
146
2004 it was agreed that Forth 94 required updating.
147 148 149 150 151 152 153 154

A committee was formed and agreed that the process should be as open
as possible, adopting the Usenet RfD/CfV (Request for Discussion/Call
for Votes) process to produce semi-formal proposals for changes to the
standard.  In addition to general discussion on the \texttt{comp.lang.forth}
usenet news group, a moderated mailing list (with public archive) was
created for those who do not follow the news group.
Standards meetings to discuss CfVs were held in public in
pknaggs's avatar
pknaggs committed
155
conjunction with the EuroForth conference.
156

pknaggs's avatar
pknaggs committed
157
The work of the Forth 94 committee was the basis of this standard,
158
informally called Forth 200\emph{x}.  The aim of the Forth 200\emph{x}
pknaggs's avatar
pknaggs committed
159
committee is to produce a rolling document, with the standard constantly
160 161
being updated based on discussion of proposals and the corresponding
votes.  A snapshot document is occasionally produced, with this document
pknaggs's avatar
pknaggs committed
162
being the first.
163 164 165 166 167 168 169

The Forth 200\emph{x} committee defined a procedure for proposals.  In
addition to the formal text of the proposal, they had to include:
the rationale behind the change;
a reference implementation, or a description of the reason a reference
implementation cannot be presented;
unit testing for the proposed change, especially for border conditions.
pknaggs's avatar
pknaggs committed
170
See \xref[Process]{process} (page \pageref{process}) for a full description.
171 172


pknaggs's avatar
pknaggs committed
173
\section{Differences from Forth 94} % D.7
pknaggs's avatar
pknaggs committed
174
\label{diff:forth94}
175

pknaggs's avatar
pknaggs committed
176 177
\subsection{Removed Obsolete Words} % D.7.1
\label{diff:ans:obsolete}
178 179 180

Forth 94 declared seven words as `obsolescent', all but
\word[tools]{FORGET} have been removed from this standard.
181 182

\begin{description}
183 184
\item[Words affected:] ~\\
	\texttt{\#TIB},
pknaggs's avatar
pknaggs committed
185 186 187 188 189
  	\texttt{CONVERT},
  	\texttt{EXPECT},
  	\texttt{QUERY},
  	\texttt{SPAN},
  	\texttt{TIB},
190
  	\word{WORD}.
pknaggs's avatar
pknaggs committed
191
  
192 193
\item[Reason:] ~\\
	Obsolescent words have been removed.
pknaggs's avatar
pknaggs committed
194
  
195 196 197
\item[Impact:] ~\\
	\word{WORD} is no longer required to leave a space at the end of
	the returned string.
pknaggs's avatar
pknaggs committed
198

199 200 201
	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.
pknaggs's avatar
pknaggs committed
202

203 204 205
\item[Transition/Conversion:] ~\\
	The functions of \texttt{TIB} and \texttt{\#TIB} have been
	superseded by \word{SOURCE}.
pknaggs's avatar
pknaggs committed
206
 
207 208
	The function of \texttt{CONVERT} has been superseded by
	\word{toNUMBER}.
pknaggs's avatar
pknaggs committed
209

210 211
	The functions of \texttt{EXPECT} and \texttt{SPAN} have been
	superseded by \word{ACCEPT}.
pknaggs's avatar
pknaggs committed
212

213 214
	The function of \texttt{QUERY} may be performed with \word{ACCEPT}
	and \word{EVALUATE}.
215 216 217
\end{description}


pknaggs's avatar
pknaggs committed
218
\subsection{Separate Floating-point Stack is now Standard} % D.7.2
pknaggs's avatar
pknaggs committed
219
\label{diff:fpstack}
220

pknaggs's avatar
pknaggs committed
221 222 223 224
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).
225 226

\begin{description}
227 228
\item[Words Affected:] ~\\
	All floating-point words.
229

230 231
\item[Reason:] ~\\
	The developing of software that may be used with either a combined
pknaggs's avatar
pknaggs committed
232 233
	stack or a separate stack is extremely difficult and costly.  While
	some of the systems surveyed provide a combined floating-point/data
234
	stack, they all provide a separate floating-point stack.
235

236 237 238
\item[Impact:] ~\\
	Forth 94 programs with an environmental dependency on a separate
	floating-point stack become standard programs.
239

240 241
	Forth 94 programs with an environmental dependency on a combined
	stack retain the environmental dependency.
242

243 244
	Forth 94 programs (without environmental dependency, i.e., those
	working on either kind of system) remain standard programs.
245

pknaggs's avatar
pknaggs committed
246
	Forth 94 systems that implement a separate floating-point stack
pknaggs's avatar
pknaggs committed
247
	continue to be standard systems.
248

249
	Forth 94 systems that implement a combined stack become systems
pknaggs's avatar
pknaggs committed
250
	with an environmental restriction of not providing a separate
251
	floating-point stack, but a combined stack.
252

253 254 255 256
\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.
257

258 259 260
	A system that has an environmental restriction on using a combined
	floating-point/data stack should consider providing a separate
	floating-point stack.
261 262 263
\end{description}


pknaggs's avatar
pknaggs committed
264
\subsection[Using ENVIRONMENT? to inquire whether a word set is present]{Using \word{ENVIRONMENTq} to inquire whether a word set is present} % D.7.3
pknaggs's avatar
pknaggs committed
265
\label{diff:environment}
266

267 268 269 270 271 272
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.
273

274
The committee considered adding a year indicator to the word set name
pknaggs's avatar
pknaggs committed
275 276 277 278
(``\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
279
mechanism, but rather to mark it as obsolescent.
280 281

\begin{description}
282
\item[Words Affected:] ~\\
pknaggs's avatar
pknaggs committed
283
	\word{ENVIRONMENTq}
pknaggs's avatar
pknaggs committed
284

285 286 287 288 289
\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.
pknaggs's avatar
pknaggs committed
290

291 292 293 294 295
\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.
pknaggs's avatar
pknaggs committed
296 297

\item[Transition/Conversion:] ~\\
298
	There is no direct equivalent to determine the presence of a whole
pknaggs's avatar
pknaggs committed
299
	word set.  The \wref{tools:[DEFINED]}{} and \wref{tools:[UNDEFINED]}{}
300 301
	words can be used to detect the availability (or otherwise) of
	individual words.
302 303
\end{description}

304 305

\subsection[Additional TO targets]{Additional \word{TO} targets} % D.7.4
pknaggs's avatar
pknaggs committed
306
\label{diff:12:to}
307

308 309
\wref{core:TO}{TO} has been extended to act on targets defined with
\wref{floating:FVALUE}{} and \wref{double:2VALUE}{}.
310 311

\begin{description}
312 313
\item[Words affected:] ~\\
	\word{TO}
314 315 316
\end{description}


317
\subsection{Input/Output return values} % D.7.5
pknaggs's avatar
pknaggs committed
318
\label{diff:12:ior}
319 320

\begin{description}
321 322
\item[Words affected:] ~\\
	All words that return an \param{ior}.
323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340
% 	\word[memory]{ALLOCATE},
% 	\word{CLOSE-FILE},
% 	\word{CREATE-FILE},
% 	\word{DELETE-FILE},
% 	\word{FILE-POSITION},
% 	\word{FILE-SIZE},
% 	\word{FILE-STATUS},
% 	\word{FLUSH-FILE},
% 	\word[memory]{FREE},
% 	\word{OPEN-FILE},
% 	\word{READ-FILE},
% 	\word{READ-LINE}, \linebreak
% 	\word{RENAME-FILE},
% 	\word{REPOSITION-FILE},
% 	\word{RESIZE-FILE},
% 	\word[memory]{RESIZE},
% 	\word{WRITE-FILE},
% 	\word{WRITE-LINE}.
pknaggs's avatar
pknaggs committed
341

342 343
\item[Reason:] ~\\
	Forth 94 left the error code (\param{ior}) implementation-defined,
pknaggs's avatar
pknaggs committed
344
	although it did recommend an \param{ior} to be a \word[exception]{THROW}
pknaggs's avatar
pknaggs committed
345
	code.  Forth 2012 now requires an \param{ior} to be a
346
	\word[exception]{THROW} code.
pknaggs's avatar
pknaggs committed
347

348 349 350 351 352 353 354 355 356
\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.
pknaggs's avatar
pknaggs committed
357 358 359
\end{description}


360
\subsection{Minimum number of locals} % D.7.6
pknaggs's avatar
pknaggs committed
361
\label{diff:12:locals}
362 363

\begin{description}
364 365
\item[Words affected:] ~\\
	\word[local]{LOCAL}, \word[local]{LOCALS}
pknaggs's avatar
pknaggs committed
366

367 368
\item[Reason:] ~\\
	Some programs require more than eight locals.
pknaggs's avatar
pknaggs committed
369
 
370 371
\item[Transition/Conversion:] ~\\
	Existing programs are unaffected.  Systems implementing the locals
pknaggs's avatar
pknaggs committed
372
	word set have to be changed to support at least 16 (previously 8)
373
	locals.
pknaggs's avatar
pknaggs committed
374
\end{description}
375

376 377

\subsection{Number prefixes} % D.7.7
pknaggs's avatar
pknaggs committed
378
 \label{diff:12:prefix}
379

380
Decimal, hexadecimal, binary number literals can now be written
pknaggs's avatar
pknaggs committed
381
irrespective of \word{BASE} by using the prefix \#, \$, \%.  Also, character
382
literals can be written as 'c'.
pknaggs's avatar
pknaggs committed
383
 
384 385
Standard programs are unaffected.  Systems have to be changed to
recognize these forms.
pknaggs's avatar
pknaggs committed
386

387
See \xref[3.4.1.3]{usage:numbers}.
pknaggs's avatar
pknaggs committed
388 389
 

390
\subsection[SOURCE-ID Clarification]{\word{SOURCE-ID} Clarification} % D.7.7
pknaggs's avatar
pknaggs committed
391 392 393 394
\label{diff:12:sourceid}

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
395
undefined.
pknaggs's avatar
pknaggs committed
396 397


398
\subsection[FASINH]{\word[floating]{FASINH}} % D.7.9
pknaggs's avatar
pknaggs committed
399 400
 \label{diff:12:fasinh}

401
An ambiguous condition on \param{r1} being less than 0 was removed.
402

403 404
Existing programs are not affected.  Existing systems are
unlikely to be affected.
pknaggs's avatar
pknaggs committed
405

406 407

\subsection[FATAN2]{\word[floating]{FATAN2}} % D.7.10
pknaggs's avatar
pknaggs committed
408 409 410
\label{diff:12:fatan2}

\begin{description}
411 412
\item[Words affected:] ~\\
	\word[floating]{FATAN2}
pknaggs's avatar
pknaggs committed
413

414 415 416
\item[Reason:] ~\\
	The result is now specified more tightly: it is the principal angle
	(between -pi and pi).
pknaggs's avatar
pknaggs committed
417

418 419
\item[Impact:] ~\\
	Forth 94 compliant programs are not affected.
pknaggs's avatar
pknaggs committed
420

421 422 423
\item[Transition/Conversion:] ~\\
	Systems may have to change \word[floating]{FATAN2} to return
	the principal angle.
424 425
\end{description}

pknaggs's avatar
pknaggs committed
426
% =========================================================
427

pknaggs's avatar
pknaggs committed
428
\section{Additional words} % D.8
429 430
\label{diff:new12}

pknaggs's avatar
pknaggs committed
431
The following words have been added to the standard:
432 433

\setcounter{subsection}{5}
pknaggs's avatar
pknaggs committed
434 435
\subsection{Core word sets}
The following words have been added to \xref{wordlist:core-ext}:
436 437

\begin{minipage}[t]{0.3\linewidth}
pknaggs's avatar
pknaggs committed
438 439 440
	\wref{core:ACTION-OF}{} \\
	\wref{core:BUFFER:}{} \\
	\wref{core:DEFER}{}
441 442 443
\end{minipage}
\hfill
\begin{minipage}[t]{0.3\linewidth}
pknaggs's avatar
pknaggs committed
444 445 446
	\wref{core:DEFER!}{} \\
	\wref{core:DEFER@}{} \\
	\wref{core:HOLDS}{}
447 448 449
\end{minipage}
\hfill
\begin{minipage}[t]{0.3\linewidth}
pknaggs's avatar
pknaggs committed
450 451 452
	\wref{core:IS}{} \\
	\wref{core:PARSE-NAME}{} \\
	\wref{core:Seq}{}
453
\end{minipage}
pknaggs's avatar
pknaggs committed
454
\html{<br class="clear" />}
455 456


pknaggs's avatar
pknaggs committed
457 458
% Block word sets
\stepcounter{subsection}
459

pknaggs's avatar
pknaggs committed
460 461
\subsection{Double-Number word sets}
The following words have been added to \xref{wordlist:double-ext}:
462

pknaggs's avatar
pknaggs committed
463
\wref{double:2VALUE}{}
464

pknaggs's avatar
pknaggs committed
465 466
% Exception word sets
\stepcounter{subsection}
467

pknaggs's avatar
pknaggs committed
468 469
\subsection{Facility word sets}
The following words have been added to \xref{wordlist:facility-ext}:
470 471

\begin{minipage}[t]{0.35\linewidth}
pknaggs's avatar
pknaggs committed
472 473 474 475 476 477 478 479 480 481 482
	\wref{facility:+FIELD}{} \\
	\wref{facility:BEGIN-STRUCTURE}{} \\
	\wref{facility:CFIELD:}{} \\
	\wref{facility:EKEYtoFKEY}{} \\
	\wref{facility:END-STRUCTURE}{} \\
	\wref{facility:FIELD:}{} \\
	\wref{facility:K-ALT-MASK}{} \\
	\wref{facility:K-CTRL-MASK}{} \\
	\wref{facility:K-DELETE}{} \\
	\wref{facility:K-DOWN}{} \\
	\wref{facility:K-END}{}
483 484 485
\end{minipage}
\hfill
\begin{minipage}[t]{0.25\linewidth}
pknaggs's avatar
pknaggs committed
486 487 488 489 490 491 492 493 494 495 496
	\wref{facility:K-F1}{} \\
	\wref{facility:K-F10}{} \\
	\wref{facility:K-F11}{} \\
	\wref{facility:K-F12}{} \\
	\wref{facility:K-F2}{} \\
	\wref{facility:K-F3}{} \\
	\wref{facility:K-F4}{} \\
	\wref{facility:K-F5}{} \\
	\wref{facility:K-F6}{} \\
	\wref{facility:K-F7}{} \\
	\wref{facility:K-F8}{}
497 498 499
\end{minipage}
\hfill
\begin{minipage}[t]{0.35\linewidth}
pknaggs's avatar
pknaggs committed
500 501 502 503 504 505 506 507 508
	\wref{facility:K-F9}{} \\
	\wref{facility:K-HOME}{} \\
	\wref{facility:K-INSERT}{} \\
	\wref{facility:K-LEFT}{} \\
	\wref{facility:K-NEXT}{} \\
	\wref{facility:K-PRIOR}{} \\
	\wref{facility:K-RIGHT}{} \\
	\wref{facility:K-SHIFT-MASK}{} \\
	\wref{facility:K-UP}{}
509
\end{minipage}
pknaggs's avatar
pknaggs committed
510
\html{<br class="clear" />}
511

pknaggs's avatar
pknaggs committed
512 513
\subsection{File-Access word sets}
The following words have been added to \xref{wordlist:file-ext}:
514 515

\begin{minipage}[t]{0.3\linewidth}
pknaggs's avatar
pknaggs committed
516
	\wref{file:INCLUDE}{}
517 518 519
\end{minipage}
\hfill
\begin{minipage}[t]{0.3\linewidth}
pknaggs's avatar
pknaggs committed
520
	\wref{file:REQUIRE}{}
521 522 523
\end{minipage}
\hfill
\begin{minipage}[t]{0.3\linewidth}
pknaggs's avatar
pknaggs committed
524
	\wref{file:REQUIRED}{}
525
\end{minipage}
pknaggs's avatar
pknaggs committed
526
\html{<br class="clear" />}
527

pknaggs's avatar
pknaggs committed
528 529
\subsection{Floating-Point word sets}
The following words have been added to \xref{wordlist:floating-ext}:
530 531

\begin{minipage}[t]{0.3\linewidth}
pknaggs's avatar
pknaggs committed
532 533 534
	\wref{floating:DFFIELD:}{} \\
	\wref{floating:FtoS}{F>S} \\
	\wref{floating:FFIELD:}{}
535 536 537
\end{minipage}
\hfill
\begin{minipage}[t]{0.3\linewidth}
pknaggs's avatar
pknaggs committed
538 539
	\wref{floating:FTRUNC}{} \\
	\wref{floating:FVALUE}{}
540 541 542
\end{minipage}
\hfill
\begin{minipage}[t]{0.3\linewidth}
pknaggs's avatar
pknaggs committed
543 544
	\wref{floating:StoF}{S>F} \\
	\wref{floating:SFFIELD:}{}
545
\end{minipage}
pknaggs's avatar
pknaggs committed
546
\html{<br class="clear" />}
547

pknaggs's avatar
pknaggs committed
548 549
\subsection{Locals word sets}
The following words have been added to \xref{wordlist:local-ext}:
550

pknaggs's avatar
pknaggs committed
551
\wref{local:b:}{}
552

pknaggs's avatar
pknaggs committed
553 554
% Memory-Allocation word sets
\stepcounter{subsection}
555

pknaggs's avatar
pknaggs committed
556 557 558
\subsection{Programming-Tools word sets}
\label{diff:12:tools}
The following words have been added to the \xref{wordlist:tools-ext}:
559

pknaggs's avatar
pknaggs committed
560 561
\begin{minipage}[t]{0.45\linewidth}
	\wref{tools:NtoR}{} \\
562 563 564
	\wref{tools:NAMEtoCOMPILE}{} \\
	\wref{tools:NAMEtoINTERPRET}{} \\
	\wref{tools:NAMEtoSTRING}{} \\
pknaggs's avatar
pknaggs committed
565
	\wref{tools:NRfrom}{}
566 567
\end{minipage}
\hfill
pknaggs's avatar
pknaggs committed
568 569
\begin{minipage}[t]{0.45\linewidth}
	\wref{tools:SYNONYM}{} \\
570
	\wref{tools:TRAVERSE-WORDLIST}{} \\
pknaggs's avatar
pknaggs committed
571 572
	\wref{tools:[DEFINED]}{} \\
	\wref{tools:[UNDEFINED]}{}
573
\end{minipage}
pknaggs's avatar
pknaggs committed
574
\html{<br class="clear" />}
575

pknaggs's avatar
pknaggs committed
576 577
% Search-Order word sets
\stepcounter{subsection}
578

pknaggs's avatar
pknaggs committed
579 580
\subsection{String word sets}
The following words have been added to the \xref{wordlist:string-ext}:
581 582

\begin{minipage}[t]{0.3\linewidth}
pknaggs's avatar
pknaggs committed
583
	\wref{string:REPLACES}{}
584 585 586
\end{minipage}
\hfill
\begin{minipage}[t]{0.3\linewidth}
pknaggs's avatar
pknaggs committed
587
	\wref{string:SUBSTITUTE}{}
588 589 590
\end{minipage}
\hfill
\begin{minipage}[t]{0.3\linewidth}
pknaggs's avatar
pknaggs committed
591
	\wref{string:UNESCAPE}{}
592
\end{minipage}
pknaggs's avatar
pknaggs committed
593
\html{<br class="clear" />}
594

pknaggs's avatar
pknaggs committed
595
\subsection{Extended-Character word sets}
pknaggs's avatar
pknaggs committed
596
The Extended Character word set was introduced by Forth-\snapshot.
597

pknaggs's avatar
pknaggs committed
598
The following words make up \xref{wordlist:xchar}:
599 600

\begin{minipage}[t]{0.25\linewidth}
pknaggs's avatar
pknaggs committed
601 602 603 604
	\wref{xchar:X-SIZE}{} \\
	\wref{xchar:XC!+}{} \\
	\wref{xchar:XC!+q}{} \\
	\wref{xchar:XC,}{}
605 606 607
\end{minipage}
\hfill
\begin{minipage}[t]{0.25\linewidth}
pknaggs's avatar
pknaggs committed
608 609 610 611
	\wref{xchar:XC-SIZE}{} \\
	\wref{xchar:XC@+}{} \\
	\wref{xchar:XCHAR+}{} \\
	\wref{xchar:XEMIT}{}
612 613 614
\end{minipage}
\hfill
\begin{minipage}[t]{0.4\linewidth}
pknaggs's avatar
pknaggs committed
615 616 617 618
	\wref{xchar:XKEY}{} \\
	\wref{xchar:XKEYq}{} \\
	\wref{xchar:+X/STRING}{} \\
	\wref{xchar:-TRAILING-GARBAGE}{}
619
\end{minipage}
pknaggs's avatar
pknaggs committed
620
\html{<br class="clear" />}
621

pknaggs's avatar
pknaggs committed
622
The following words make up \xref{wordlist:xchar-ext}:
623 624

\begin{minipage}[t]{0.3\linewidth}
pknaggs's avatar
pknaggs committed
625 626 627
	\wref{xchar:CHAR}{} \\
	\wref{xchar:EKEYtoXCHAR}{} \\
	\wref{xchar:PARSE}{}
628 629 630
\end{minipage}
\hfill
\begin{minipage}[t]{0.3\linewidth}
pknaggs's avatar
pknaggs committed
631 632 633
	\wref{xchar:X-WIDTH}{} \\
	\wref{xchar:XC-WIDTH}{} \\
	\wref{xchar:XCHAR-}{}
634 635 636
\end{minipage}
\hfill
\begin{minipage}[t]{0.3\linewidth}
pknaggs's avatar
pknaggs committed
637 638 639
	\wref{xchar:XHOLD}{} \\
	\wref{xchar:XSTRING-}{} \\
	\wref{xchar:[CHAR]}{}
640
\end{minipage}
pknaggs's avatar
pknaggs committed
641
\html{<br class="clear" />}