diff.tex 20.8 KB
 pknaggs committed Sep 30, 2011 1 % !TeX root = forth.tex  pknaggs committed Feb 29, 2012 2 % !TeX spellcheck = en_US  pknaggs committed Oct 26, 2013 3 \annex{Compatibility analysis} % D (informative annex)  pknaggs committed Nov 06, 2012 4 \label{annex:diff}  pknaggs committed Aug 23, 2007 5 6 \setwordlist{core}  pknaggs committed Oct 26, 2013 7 Before this standard, there were several industry standards for Forth.  pknaggs committed Aug 23, 2007 8 The most influential are listed here in chronological order, along  pknaggs committed Nov 06, 2012 9 with the major differences between this standard and the most recent,  pknaggs committed Oct 26, 2013 10 Forth 94.  pknaggs committed Aug 23, 2007 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.  pknaggs committed Nov 06, 2012 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  pknaggs committed Aug 23, 2007 20 21 implementation was the same across all machines, programs written in FIG Forth enjoyed a substantial degree of portability, even for  pknaggs committed Nov 06, 2012 22 23 system-level'' programs that directly manipulate the internals of the Forth system implementation.  pknaggs committed Aug 23, 2007 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 committed Oct 26, 2013 81 \section{ANS Forth (1994)} % D.5  pknaggs committed Feb 29, 2012 82 \label{diff:ans}  pknaggs committed Aug 23, 2007 83   pknaggs committed Nov 06, 2012 84 In the mid to late 1980s the computer industry underwent a rapid and  pknaggs committed Oct 26, 2013 85 profound change. The personal-computer market matured into a business  pknaggs committed Nov 06, 2012 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 committed Oct 26, 2013 89 for the execution of the Forth language.  pknaggs committed Nov 06, 2012 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 committed Oct 26, 2013 96 Forth 79 and Forth 83 but the exploitation of technical developments.  pknaggs committed Nov 06, 2012 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 committed Oct 26, 2013 102 103 included in any previous standard. This was the most comprehensive review of Forth systems to date, taking  pknaggs committed Nov 18, 2014 104 eighty-seven days covering twenty-three meetings over eight years.  pknaggs committed Oct 26, 2013 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.  pknaggs committed May 13, 2014 108   pknaggs committed Nov 06, 2012 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 committed Oct 26, 2013 115 developer with a complete list of entitlements.  pknaggs committed Nov 06, 2012 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  pknaggs committed May 13, 2014 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 committed Oct 26, 2013 123 to use a stack size most suited to the environment.  pknaggs committed Nov 06, 2012 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 committed Feb 29, 2012 127 Information Systems --- Programming Language FORTH}''. This is referenced  pknaggs committed Oct 26, 2013 128 throughout this document as Forth 94.  pknaggs committed Feb 29, 2012 129   pknaggs committed Oct 26, 2013 130 \section{ISO Forth (1997)}  pknaggs committed Feb 29, 2012 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}''.  pknaggs committed Aug 23, 2007 140 141   pknaggs committed Oct 26, 2013 142 \section{Approach of this standard} % D.6  pknaggs committed Nov 06, 2012 143 \label{diff:approach}  pknaggs committed Feb 29, 2012 144   pknaggs committed Nov 06, 2012 145 During a workshop on the Forth standard at the EuroForth conference in  pknaggs committed May 13, 2014 146 2004 it was agreed that Forth 94 required updating.  pknaggs committed Nov 06, 2012 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 committed Oct 26, 2013 155 conjunction with the EuroForth conference.  pknaggs committed Aug 23, 2007 156   pknaggs committed Oct 26, 2013 157 The work of the Forth 94 committee was the basis of this standard,  pknaggs committed Nov 06, 2012 158 informally called Forth 200\emph{x}. The aim of the Forth 200\emph{x}  pknaggs committed Oct 26, 2013 159 committee is to produce a rolling document, with the standard constantly  pknaggs committed Nov 06, 2012 160 161 being updated based on discussion of proposals and the corresponding votes. A snapshot document is occasionally produced, with this document  pknaggs committed Oct 26, 2013 162 being the first.  pknaggs committed Nov 06, 2012 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 committed Oct 26, 2013 170 See \xref[Process]{process} (page \pageref{process}) for a full description.  pknaggs committed Aug 23, 2007 171 172   pknaggs committed Nov 09, 2013 173 \section{Differences from Forth 94} % D.7  pknaggs committed Oct 26, 2013 174 \label{diff:forth94}  pknaggs committed Aug 23, 2007 175   pknaggs committed Oct 26, 2013 176 177 \subsection{Removed Obsolete Words} % D.7.1 \label{diff:ans:obsolete}  pknaggs committed May 13, 2014 178 179 180  Forth 94 declared seven words as obsolescent', all but \word[tools]{FORGET} have been removed from this standard.  pknaggs committed Aug 23, 2007 181 182  \begin{description}  pknaggs committed May 13, 2014 183 184 \item[Words affected:] ~\\ \texttt{\#TIB},  pknaggs committed Oct 26, 2013 185 186 187 188 189  \texttt{CONVERT}, \texttt{EXPECT}, \texttt{QUERY}, \texttt{SPAN}, \texttt{TIB},  pknaggs committed May 13, 2014 190  \word{WORD}.  pknaggs committed Oct 26, 2013 191   pknaggs committed May 13, 2014 192 193 \item[Reason:] ~\\ Obsolescent words have been removed.  pknaggs committed Oct 26, 2013 194   pknaggs committed May 13, 2014 195 196 197 \item[Impact:] ~\\ \word{WORD} is no longer required to leave a space at the end of the returned string.  pknaggs committed Oct 26, 2013 198   pknaggs committed May 13, 2014 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 committed Oct 26, 2013 202   pknaggs committed May 13, 2014 203 204 205 \item[Transition/Conversion:] ~\\ The functions of \texttt{TIB} and \texttt{\#TIB} have been superseded by \word{SOURCE}.  pknaggs committed Oct 26, 2013 206   pknaggs committed May 13, 2014 207 208  The function of \texttt{CONVERT} has been superseded by \word{toNUMBER}.  pknaggs committed Oct 26, 2013 209   pknaggs committed May 13, 2014 210 211  The functions of \texttt{EXPECT} and \texttt{SPAN} have been superseded by \word{ACCEPT}.  pknaggs committed Oct 26, 2013 212   pknaggs committed May 13, 2014 213 214  The function of \texttt{QUERY} may be performed with \word{ACCEPT} and \word{EVALUATE}.  pknaggs committed Aug 23, 2007 215 216 217 \end{description}  pknaggs committed Nov 18, 2014 218 \subsection{Separate Floating-point Stack is now Standard} % D.7.2  pknaggs committed Oct 26, 2013 219 \label{diff:fpstack}  pknaggs committed Aug 23, 2007 220   pknaggs committed Nov 18, 2014 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).  pknaggs committed Aug 23, 2007 225 226  \begin{description}  pknaggs committed May 13, 2014 227 228 \item[Words Affected:] ~\\ All floating-point words.  pknaggs committed Aug 23, 2007 229   pknaggs committed May 13, 2014 230 231 \item[Reason:] ~\\ The developing of software that may be used with either a combined  pknaggs committed Oct 26, 2013 232 233  stack or a separate stack is extremely difficult and costly. While some of the systems surveyed provide a combined floating-point/data  pknaggs committed May 13, 2014 234  stack, they all provide a separate floating-point stack.  pknaggs committed Aug 23, 2007 235   pknaggs committed May 13, 2014 236 237 238 \item[Impact:] ~\\ Forth 94 programs with an environmental dependency on a separate floating-point stack become standard programs.  pknaggs committed Aug 23, 2007 239   pknaggs committed May 13, 2014 240 241  Forth 94 programs with an environmental dependency on a combined stack retain the environmental dependency.  pknaggs committed Aug 23, 2007 242   pknaggs committed May 13, 2014 243 244  Forth 94 programs (without environmental dependency, i.e., those working on either kind of system) remain standard programs.  pknaggs committed Aug 23, 2007 245   pknaggs committed Sep 28, 2014 246  Forth 94 systems that implement a separate floating-point stack  pknaggs committed Nov 18, 2014 247  continue to be standard systems.  pknaggs committed Aug 23, 2007 248   pknaggs committed May 13, 2014 249  Forth 94 systems that implement a combined stack become systems  pknaggs committed Oct 26, 2013 250  with an environmental restriction of not providing a separate  pknaggs committed May 13, 2014 251  floating-point stack, but a combined stack.  pknaggs committed Aug 23, 2007 252   pknaggs committed May 13, 2014 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.  pknaggs committed Aug 23, 2007 257   pknaggs committed May 13, 2014 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.  pknaggs committed Aug 23, 2007 261 262 263 \end{description}  pknaggs committed Nov 18, 2014 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 committed Oct 26, 2013 265 \label{diff:environment}  pknaggs committed Aug 23, 2007 266   pknaggs committed May 13, 2014 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.  pknaggs committed Aug 23, 2007 273   pknaggs committed May 13, 2014 274 The committee considered adding a year indicator to the word set name  pknaggs committed Oct 26, 2013 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  pknaggs committed May 13, 2014 279 mechanism, but rather to mark it as obsolescent.  pknaggs committed Aug 23, 2007 280 281  \begin{description}  pknaggs committed May 13, 2014 282 \item[Words Affected:] ~\\  pknaggs committed Nov 18, 2014 283  \word{ENVIRONMENTq}  pknaggs committed Oct 26, 2013 284   pknaggs committed May 13, 2014 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 committed Oct 26, 2013 290   pknaggs committed May 13, 2014 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 committed Oct 26, 2013 296 297  \item[Transition/Conversion:] ~\\  pknaggs committed May 13, 2014 298  There is no direct equivalent to determine the presence of a whole  pknaggs committed Oct 26, 2013 299  word set. The \wref{tools:[DEFINED]}{} and \wref{tools:[UNDEFINED]}{}  pknaggs committed May 13, 2014 300 301  words can be used to detect the availability (or otherwise) of individual words.  pknaggs committed Aug 23, 2007 302 303 \end{description}  pknaggs committed May 13, 2014 304 305  \subsection[Additional TO targets]{Additional \word{TO} targets} % D.7.4  pknaggs committed Oct 26, 2013 306 \label{diff:12:to}  pknaggs committed Aug 23, 2007 307   pknaggs committed May 13, 2014 308 309 \wref{core:TO}{TO} has been extended to act on targets defined with \wref{floating:FVALUE}{} and \wref{double:2VALUE}{}.  pknaggs committed Aug 23, 2007 310 311  \begin{description}  pknaggs committed May 13, 2014 312 313 \item[Words affected:] ~\\ \word{TO}  pknaggs committed Aug 23, 2007 314 315 316 \end{description}  pknaggs committed May 13, 2014 317 \subsection{Input/Output return values} % D.7.5  pknaggs committed Oct 26, 2013 318 \label{diff:12:ior}  pknaggs committed Aug 23, 2007 319 320  \begin{description}  pknaggs committed May 13, 2014 321 322 \item[Words affected:] ~\\ All words that return an \param{ior}.  pknaggs committed Nov 06, 2012 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 committed Feb 29, 2012 341   pknaggs committed May 13, 2014 342 343 \item[Reason:] ~\\ Forth 94 left the error code (\param{ior}) implementation-defined,  pknaggs committed Nov 09, 2013 344  although it did recommend an \param{ior} to be a \word[exception]{THROW}  pknaggs committed Oct 26, 2013 345  code. Forth 2012 now requires an \param{ior} to be a  pknaggs committed May 13, 2014 346  \word[exception]{THROW} code.  pknaggs committed Oct 26, 2013 347   pknaggs committed May 13, 2014 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 committed Oct 26, 2013 357 358 359 \end{description}  pknaggs committed May 13, 2014 360 \subsection{Minimum number of locals} % D.7.6  pknaggs committed Oct 26, 2013 361 \label{diff:12:locals}  pknaggs committed Nov 06, 2012 362 363  \begin{description}  pknaggs committed May 13, 2014 364 365 \item[Words affected:] ~\\ \word[local]{LOCAL}, \word[local]{LOCALS}  pknaggs committed Oct 26, 2013 366   pknaggs committed May 13, 2014 367 368 \item[Reason:] ~\\ Some programs require more than eight locals.  pknaggs committed Oct 26, 2013 369   pknaggs committed May 13, 2014 370 371 \item[Transition/Conversion:] ~\\ Existing programs are unaffected. Systems implementing the locals  pknaggs committed Nov 18, 2014 372  word set have to be changed to support at least 16 (previously 8)  pknaggs committed May 13, 2014 373  locals.  pknaggs committed Oct 26, 2013 374 \end{description}  pknaggs committed Nov 06, 2012 375   pknaggs committed May 13, 2014 376 377  \subsection{Number prefixes} % D.7.7  pknaggs committed Oct 26, 2013 378  \label{diff:12:prefix}  pknaggs committed Nov 06, 2012 379   pknaggs committed May 13, 2014 380 Decimal, hexadecimal, binary number literals can now be written  pknaggs committed Sep 28, 2014 381 irrespective of \word{BASE} by using the prefix \#, \\$, \%. Also, character  pknaggs committed May 13, 2014 382 literals can be written as 'c'.  pknaggs committed Oct 26, 2013 383   pknaggs committed May 13, 2014 384 385 Standard programs are unaffected. Systems have to be changed to recognize these forms.  pknaggs committed Oct 26, 2013 386   pknaggs committed May 13, 2014 387 See \xref[3.4.1.3]{usage:numbers}.  pknaggs committed Oct 26, 2013 388 389   pknaggs committed May 13, 2014 390 \subsection[SOURCE-ID Clarification]{\word{SOURCE-ID} Clarification} % D.7.7  pknaggs committed Oct 26, 2013 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  pknaggs committed May 13, 2014 395 undefined.  pknaggs committed Oct 26, 2013 396 397   pknaggs committed May 13, 2014 398 \subsection[FASINH]{\word[floating]{FASINH}} % D.7.9  pknaggs committed Oct 26, 2013 399 400  \label{diff:12:fasinh}  pknaggs committed May 13, 2014 401 An ambiguous condition on \param{r1} being less than 0 was removed.  pknaggs committed Nov 06, 2012 402   pknaggs committed May 13, 2014 403 404 Existing programs are not affected. Existing systems are unlikely to be affected.  pknaggs committed Oct 26, 2013 405   pknaggs committed May 13, 2014 406 407  \subsection[FATAN2]{\word[floating]{FATAN2}} % D.7.10  pknaggs committed Oct 26, 2013 408 409 410 \label{diff:12:fatan2} \begin{description}  pknaggs committed May 13, 2014 411 412 \item[Words affected:] ~\\ \word[floating]{FATAN2}  pknaggs committed Oct 26, 2013 413   pknaggs committed May 13, 2014 414 415 416 \item[Reason:] ~\\ The result is now specified more tightly: it is the principal angle (between -pi and pi).  pknaggs committed Oct 26, 2013 417   pknaggs committed May 13, 2014 418 419 \item[Impact:] ~\\ Forth 94 compliant programs are not affected.  pknaggs committed Oct 26, 2013 420   pknaggs committed May 13, 2014 421 422 423 \item[Transition/Conversion:] ~\\ Systems may have to change \word[floating]{FATAN2} to return the principal angle.  pknaggs committed Nov 06, 2012 424 425 \end{description}  pknaggs committed Oct 26, 2013 426 % =========================================================  pknaggs committed Nov 06, 2012 427   pknaggs committed Nov 09, 2013 428 \section{Additional words} % D.8  pknaggs committed Nov 06, 2012 429 430 \label{diff:new12}  pknaggs committed Oct 26, 2013 431 The following words have been added to the standard:  pknaggs committed Nov 06, 2012 432 433  \setcounter{subsection}{5}  pknaggs committed Oct 26, 2013 434 435 \subsection{Core word sets} The following words have been added to \xref{wordlist:core-ext}:  pknaggs committed Nov 06, 2012 436 437  \begin{minipage}[t]{0.3\linewidth}  pknaggs committed Oct 26, 2013 438 439 440  \wref{core:ACTION-OF}{} \\ \wref{core:BUFFER:}{} \\ \wref{core:DEFER}{}  pknaggs committed Nov 06, 2012 441 442 443 \end{minipage} \hfill \begin{minipage}[t]{0.3\linewidth}  pknaggs committed Oct 26, 2013 444 445 446  \wref{core:DEFER!}{} \\ \wref{core:DEFER@}{} \\ \wref{core:HOLDS}{}  pknaggs committed Nov 06, 2012 447 448 449 \end{minipage} \hfill \begin{minipage}[t]{0.3\linewidth}  pknaggs committed Oct 26, 2013 450 451 452  \wref{core:IS}{} \\ \wref{core:PARSE-NAME}{} \\ \wref{core:Seq}{}  pknaggs committed Nov 06, 2012 453 \end{minipage}  pknaggs committed Oct 26, 2013 454 \html{
}  pknaggs committed Nov 06, 2012 455 456   pknaggs committed Nov 18, 2014 457 458 % Block word sets \stepcounter{subsection}  pknaggs committed Nov 06, 2012 459   pknaggs committed Oct 26, 2013 460 461 \subsection{Double-Number word sets} The following words have been added to \xref{wordlist:double-ext}:  pknaggs committed Nov 06, 2012 462   pknaggs committed Oct 26, 2013 463 \wref{double:2VALUE}{}  pknaggs committed Nov 06, 2012 464   pknaggs committed Nov 18, 2014 465 466 % Exception word sets \stepcounter{subsection}  pknaggs committed Nov 06, 2012 467   pknaggs committed Oct 26, 2013 468 469 \subsection{Facility word sets} The following words have been added to \xref{wordlist:facility-ext}:  pknaggs committed Nov 06, 2012 470 471  \begin{minipage}[t]{0.35\linewidth}  pknaggs committed Oct 26, 2013 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}{}  pknaggs committed Nov 06, 2012 483 484 485 \end{minipage} \hfill \begin{minipage}[t]{0.25\linewidth}  pknaggs committed Oct 26, 2013 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}{}  pknaggs committed Nov 06, 2012 497 498 499 \end{minipage} \hfill \begin{minipage}[t]{0.35\linewidth}  pknaggs committed Oct 26, 2013 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}{}  pknaggs committed Nov 06, 2012 509 \end{minipage}  pknaggs committed Oct 26, 2013 510 \html{
}  pknaggs committed Nov 06, 2012 511   pknaggs committed Oct 26, 2013 512 513 \subsection{File-Access word sets} The following words have been added to \xref{wordlist:file-ext}:  pknaggs committed Nov 06, 2012 514 515  \begin{minipage}[t]{0.3\linewidth}  pknaggs committed Oct 26, 2013 516  \wref{file:INCLUDE}{}  pknaggs committed Nov 06, 2012 517 518 519 \end{minipage} \hfill \begin{minipage}[t]{0.3\linewidth}  pknaggs committed Oct 26, 2013 520  \wref{file:REQUIRE}{}  pknaggs committed Nov 06, 2012 521 522 523 \end{minipage} \hfill \begin{minipage}[t]{0.3\linewidth}  pknaggs committed Oct 26, 2013 524  \wref{file:REQUIRED}{}  pknaggs committed Nov 06, 2012 525 \end{minipage}  pknaggs committed Oct 26, 2013 526 \html{
}  pknaggs committed Nov 06, 2012 527   pknaggs committed Oct 26, 2013 528 529 \subsection{Floating-Point word sets} The following words have been added to \xref{wordlist:floating-ext}:  pknaggs committed Nov 06, 2012 530 531  \begin{minipage}[t]{0.3\linewidth}  pknaggs committed Oct 26, 2013 532 533 534  \wref{floating:DFFIELD:}{} \\ \wref{floating:FtoS}{F>S} \\ \wref{floating:FFIELD:}{}  pknaggs committed Nov 06, 2012 535 536 537 \end{minipage} \hfill \begin{minipage}[t]{0.3\linewidth}  pknaggs committed Oct 26, 2013 538 539  \wref{floating:FTRUNC}{} \\ \wref{floating:FVALUE}{}  pknaggs committed Nov 06, 2012 540 541 542 \end{minipage} \hfill \begin{minipage}[t]{0.3\linewidth}  pknaggs committed Oct 26, 2013 543 544  \wref{floating:StoF}{S>F} \\ \wref{floating:SFFIELD:}{}  pknaggs committed Nov 06, 2012 545 \end{minipage}  pknaggs committed Oct 26, 2013 546 \html{
}  pknaggs committed Nov 06, 2012 547   pknaggs committed Oct 26, 2013 548 549 \subsection{Locals word sets} The following words have been added to \xref{wordlist:local-ext}:  pknaggs committed Nov 06, 2012 550   pknaggs committed Oct 26, 2013 551 \wref{local:b:}{}  pknaggs committed Nov 06, 2012 552   pknaggs committed Nov 18, 2014 553 554 % Memory-Allocation word sets \stepcounter{subsection}  pknaggs committed Nov 06, 2012 555   pknaggs committed Oct 26, 2013 556 557 558 \subsection{Programming-Tools word sets} \label{diff:12:tools} The following words have been added to the \xref{wordlist:tools-ext}:  pknaggs committed Nov 06, 2012 559   pknaggs committed Oct 26, 2013 560 561 \begin{minipage}[t]{0.45\linewidth} \wref{tools:NtoR}{} \\  pknaggs committed May 13, 2014 562 563 564  \wref{tools:NAMEtoCOMPILE}{} \\ \wref{tools:NAMEtoINTERPRET}{} \\ \wref{tools:NAMEtoSTRING}{} \\  pknaggs committed Oct 26, 2013 565  \wref{tools:NRfrom}{}  pknaggs committed Nov 06, 2012 566 567 \end{minipage} \hfill  pknaggs committed Oct 26, 2013 568 569 \begin{minipage}[t]{0.45\linewidth} \wref{tools:SYNONYM}{} \\  pknaggs committed May 13, 2014 570  \wref{tools:TRAVERSE-WORDLIST}{} \\  pknaggs committed Oct 26, 2013 571 572  \wref{tools:[DEFINED]}{} \\ \wref{tools:[UNDEFINED]}{}  pknaggs committed Nov 06, 2012 573 \end{minipage}  pknaggs committed Oct 26, 2013 574 \html{
}  pknaggs committed Nov 06, 2012 575   pknaggs committed Nov 18, 2014 576 577 % Search-Order word sets \stepcounter{subsection}  pknaggs committed Nov 06, 2012 578   pknaggs committed Oct 26, 2013 579 580 \subsection{String word sets} The following words have been added to the \xref{wordlist:string-ext}:  pknaggs committed Nov 06, 2012 581 582  \begin{minipage}[t]{0.3\linewidth}  pknaggs committed Oct 26, 2013 583  \wref{string:REPLACES}{}  pknaggs committed Nov 06, 2012 584 585 586 \end{minipage} \hfill \begin{minipage}[t]{0.3\linewidth}  pknaggs committed Oct 26, 2013 587  \wref{string:SUBSTITUTE}{}  pknaggs committed Nov 06, 2012 588 589 590 \end{minipage} \hfill \begin{minipage}[t]{0.3\linewidth}  pknaggs committed Oct 26, 2013 591  \wref{string:UNESCAPE}{}  pknaggs committed Nov 06, 2012 592 \end{minipage}  pknaggs committed Oct 26, 2013 593 \html{
}  pknaggs committed Nov 06, 2012 594   pknaggs committed Sep 28, 2014 595 \subsection{Extended-Character word sets}  pknaggs committed Oct 26, 2013 596 The Extended Character word set was introduced by Forth-\snapshot.  pknaggs committed Nov 06, 2012 597   pknaggs committed Oct 26, 2013 598 The following words make up \xref{wordlist:xchar}:  pknaggs committed Nov 06, 2012 599 600  \begin{minipage}[t]{0.25\linewidth}  pknaggs committed Oct 26, 2013 601 602 603 604  \wref{xchar:X-SIZE}{} \\ \wref{xchar:XC!+}{} \\ \wref{xchar:XC!+q}{} \\ \wref{xchar:XC,}{}  pknaggs committed Nov 06, 2012 605 606 607 \end{minipage} \hfill \begin{minipage}[t]{0.25\linewidth}  pknaggs committed Oct 26, 2013 608 609 610 611  \wref{xchar:XC-SIZE}{} \\ \wref{xchar:XC@+}{} \\ \wref{xchar:XCHAR+}{} \\ \wref{xchar:XEMIT}{}  pknaggs committed Nov 06, 2012 612 613 614 \end{minipage} \hfill \begin{minipage}[t]{0.4\linewidth}  pknaggs committed Oct 26, 2013 615 616 617 618  \wref{xchar:XKEY}{} \\ \wref{xchar:XKEYq}{} \\ \wref{xchar:+X/STRING}{} \\ \wref{xchar:-TRAILING-GARBAGE}{}  pknaggs committed Nov 06, 2012 619 \end{minipage}  pknaggs committed Oct 26, 2013 620 \html{
}  pknaggs committed Nov 06, 2012 621   pknaggs committed Oct 26, 2013 622 The following words make up \xref{wordlist:xchar-ext}:  pknaggs committed Nov 06, 2012 623 624  \begin{minipage}[t]{0.3\linewidth}  pknaggs committed Oct 26, 2013 625 626 627  \wref{xchar:CHAR}{} \\ \wref{xchar:EKEYtoXCHAR}{} \\ \wref{xchar:PARSE}{}  pknaggs committed Nov 06, 2012 628 629 630 \end{minipage} \hfill \begin{minipage}[t]{0.3\linewidth}  pknaggs committed Oct 26, 2013 631 632 633  \wref{xchar:X-WIDTH}{} \\ \wref{xchar:XC-WIDTH}{} \\ \wref{xchar:XCHAR-}{}  pknaggs committed Nov 06, 2012 634 635 636 \end{minipage} \hfill \begin{minipage}[t]{0.3\linewidth}  pknaggs committed Oct 26, 2013 637 638 639  \wref{xchar:XHOLD}{} \\ \wref{xchar:XSTRING-}{} \\ \wref{xchar:[CHAR]}{}  pknaggs committed Nov 06, 2012 640 \end{minipage}  pknaggs committed Oct 26, 2013 641 \html{