Loading core.tex +49 −54 Original line number Original line Diff line number Diff line Loading @@ -117,6 +117,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{0070}{'}[tick] \begin{worddef}{0070}{'}[tick] \item \stack{"<spaces>name"}{xt} \item \stack{"<spaces>name"}{xt} Loading Loading @@ -247,6 +248,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{0110}{*/MOD}[star-slash-mod] \begin{worddef}{0110}{*/MOD}[star-slash-mod] \item \stack{n_1 n_2 n_3}{n_4 n_5} \item \stack{n_1 n_2 n_3}{n_4 n_5} Loading Loading @@ -427,6 +429,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{0150}{,}[comma] \begin{worddef}{0150}{,}[comma] \item \stack{x}{} \item \stack{x}{} Loading Loading @@ -553,6 +556,7 @@ \end{worddef} \end{worddef} \enlargethispage{4ex} \begin{worddef}{0230}{/}[slash] \begin{worddef}{0230}{/}[slash] \item \stack{n_1 n_2}{n_3} \item \stack{n_1 n_2}{n_3} Loading Loading @@ -1130,6 +1134,7 @@ \end{worddef} \end{worddef} \enlargethispage{6ex} \begin{worddef}[toR]{0580}{>R}[to-r] \begin{worddef}[toR]{0580}{>R}[to-r] \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -1269,7 +1274,7 @@ special behavior. Insofar as such behavior is outside the special behavior. Insofar as such behavior is outside the standard, Standard Programs cannot depend upon it, but the standard, Standard Programs cannot depend upon it, but the committee doesn't wish to preclude it unnecessarily. 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. functionality is impaired by this restriction. It is recommended that all non-graphic characters be reserved It is recommended that all non-graphic characters be reserved Loading Loading @@ -1465,6 +1470,7 @@ \end{worddef} \end{worddef} \enlargethispage{6ex} \begin{worddef}{0770}{BL}[b-l] \begin{worddef}{0770}{BL}[b-l] \item \stack{}{char} \item \stack{}{char} Loading Loading @@ -1725,6 +1731,7 @@ \end{worddef} \end{worddef} \vspace*{-0.5ex} \begin{worddef}{1000}{CREATE} \begin{worddef}{1000}{CREATE} \item \stack{"<spaces>name"}{} \item \stack{"<spaces>name"}{} Loading Loading @@ -1766,6 +1773,7 @@ \end{worddef} \end{worddef} \vspace*{-0.5ex} \begin{worddef}{1170}{DECIMAL} \begin{worddef}{1170}{DECIMAL} \item \stack{}{} \item \stack{}{} Loading @@ -1777,6 +1785,7 @@ \end{worddef} \end{worddef} \vspace*{-0.5ex} \begin{worddef}{1200}{DEPTH} \begin{worddef}{1200}{DEPTH} \item \stack{}{+n} \item \stack{}{+n} Loading @@ -1790,7 +1799,8 @@ \end{testing} \end{testing} \end{worddef} \end{worddef} \vspace*{-0.5ex} \enlargethispage{10ex} \begin{worddef}{1240}{DO} \begin{worddef}{1240}{DO} \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading @@ -1803,6 +1813,7 @@ semantics are incomplete until resolved by a consumer of semantics are incomplete until resolved by a consumer of \param{do-sys} such as \word{LOOP}. \param{do-sys} such as \word{LOOP}. %\pagebreak \runtime \runtime \stack{n_1|u_1 n_2|u_2}{} \stack{n_1|u_1 n_2|u_2}{} \stack[R]{}{loop-sys} \stack[R]{}{loop-sys} Loading Loading @@ -1951,6 +1962,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{1310}{ELSE} \begin{worddef}{1310}{ELSE} \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -2073,6 +2085,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{1360}{EVALUATE} \begin{worddef}{1360}{EVALUATE} \item \stack{i*x c-addr u}{j*x} \item \stack{i*x c-addr u}{j*x} Loading Loading @@ -2173,6 +2186,7 @@ \end{worddef} \end{worddef} \enlargethispage{10ex} \begin{worddef}{1550}{FIND} \begin{worddef}{1550}{FIND} \item \stack{c-addr}{c-addr 0 | xt 1 | xt -1} \item \stack{c-addr}{c-addr 0 | xt 1 | xt -1} Loading Loading @@ -2356,6 +2370,7 @@ \end{worddef} \end{worddef} \enlargethispage{4ex} \begin{worddef}{1650}{HERE} \begin{worddef}{1650}{HERE} \item \stack{}{addr} \item \stack{}{addr} Loading Loading @@ -2649,7 +2664,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{1760}{LEAVE} \begin{worddef}{1760}{LEAVE} \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -2691,6 +2706,7 @@ \end{worddef} \end{worddef} \enlargethispage{4ex} \begin{worddef}{1780}{LITERAL} \begin{worddef}{1780}{LITERAL} \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -2977,6 +2993,7 @@ \end{worddef} \end{worddef} \enlargethispage{8ex} \begin{worddef}{1910}{NEGATE} \begin{worddef}{1910}{NEGATE} \item \stack{n_1}{n_2} \item \stack{n_1}{n_2} Loading Loading @@ -3139,6 +3156,7 @@ \end{worddef} \end{worddef} \enlargethispage{8ex} \begin{worddef}[Rfrom]{2060}{R>}[r-from] \begin{worddef}[Rfrom]{2060}{R>}[r-from] \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -3334,6 +3352,7 @@ \end{worddef} \end{worddef} \enlargethispage{4ex} \begin{worddef}[Sq]{2165}{S"}[s-quote] \begin{worddef}[Sq]{2165}{S"}[s-quote] \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -3782,6 +3801,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{2380}{UNLOOP} \begin{worddef}{2380}{UNLOOP} \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -3899,6 +3919,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{2430}{WHILE} \begin{worddef}{2430}{WHILE} \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -4163,6 +4184,7 @@ %\end{worddef} %\end{worddef} \enlargethispage{6ex} \begin{worddef}[.p]{0200}{.(}[dot-paren] \begin{worddef}[.p]{0200}{.(}[dot-paren] \compile \compile Perform the execution semantics given below. Perform the execution semantics given below. Loading Loading @@ -4272,6 +4294,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{0415}{2R@}[two-r-fetch] \begin{worddef}{0415}{2R@}[two-r-fetch] \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -4394,7 +4417,7 @@ \begin{rationale} % A.6.2.0620 ?DO \begin{rationale} % A.6.2.0620 ?DO Typical use: 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} \end{rationale} \begin{testing}\ttfamily \begin{testing}\ttfamily Loading Loading @@ -4552,7 +4575,7 @@ % ------------------------------------------------------------------- % ------------------------------------------------------------------- \enlargethispage{6ex} \begin{worddef}{0825}{BUFFER:}[buffer-colon][x:buffer] \begin{worddef}{0825}{BUFFER:}[buffer-colon][x:buffer] \item \stack{u "<spaces>name"}{} \item \stack{u "<spaces>name"}{} Loading Loading @@ -4755,6 +4778,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{0945}{COMPILE,}[compile-comma] \begin{worddef}{0945}{COMPILE,}[compile-comma] \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading @@ -4769,18 +4793,13 @@ \see \rref{core:COMPILE,}{}. \see \rref{core:COMPILE,}{}. \begin{rationale} % A.6.2.0945 COMPILE, \begin{rationale} % A.6.2.0945 COMPILE, \cbstart\patch{ed13} \word{COMPILE,} is the compilation equivalent of \word{EXECUTE}. \uline{\word{COMPILE,} is the compilation equivalent of \word{EXECUTE}.} \uline{% In traditional threaded-code implementations, compilation is In traditional threaded-code implementations, compilation is performed by \word{,} (comma). This usage is not portable; it performed by \word{,} (comma). This usage is not portable; it doesn't work for subroutine-threaded, native code, or doesn't work for subroutine-threaded, native code, or relocatable implementations. Use of \word{COMPILE,} is portable. relocatable implementations. Use of \word{COMPILE,} is portable. } \uline{% In most systems it is possible to implement \word{COMPILE,} so In most systems it is possible to implement \word{COMPILE,} so it will generate code that is optimized to the same extent as it will generate code that is optimized to the same extent as code that is generated by the normal compilation process. code that is generated by the normal compilation process. Loading @@ -4792,7 +4811,6 @@ the compilation token from the execution token. In these the compilation token from the execution token. In these implementations, \word{COMPILE,} might not generate code that implementations, \word{COMPILE,} might not generate code that is as efficient as normally compiled code. is as efficient as normally compiled code. } The intention is that \word{COMPILE,} can be used as follows to write The intention is that \word{COMPILE,} can be used as follows to write the classic interpreter/com\-piler loop: the classic interpreter/com\-piler loop: Loading @@ -4817,28 +4835,6 @@ Thus the interpretation semantics are left undefined, as \word{COMPILE,} Thus the interpretation semantics are left undefined, as \word{COMPILE,} will not be executed during interpretation. 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} \end{rationale} \begin{testing}\ttfamily \begin{testing}\ttfamily Loading Loading @@ -4977,6 +4973,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{1342}{ENDCASE}[end-case] \begin{worddef}{1342}{ENDCASE}[end-case] \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -5155,6 +5152,7 @@ % =================================================================== % =================================================================== \enlargethispage{2ex} \begin{worddef}{1725}{IS}[][X:deferred] \begin{worddef}{1725}{IS}[][X:deferred] \interpret \interpret \stack{xt "<spaces>name"}{} \stack{xt "<spaces>name"}{} Loading Loading @@ -5239,6 +5237,7 @@ system to remember ``landmark information'' in advance that system to remember ``landmark information'' in advance that specifically marks the spots where the dictionary may at some specifically marks the spots where the dictionary may at some future time have to be rearranged. future time have to be rearranged. \pagebreak \end{rationale} \end{rationale} \end{worddef} \end{worddef} Loading Loading @@ -5400,12 +5399,6 @@ \item The temporary buffer is typically overwritten by the \item The temporary buffer is typically overwritten by the next use of \word{WORD}. 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} \end{enumerate} The need for \word{WORD} has largely been eliminated by The need for \word{WORD} has largely been eliminated by Loading Loading @@ -5750,6 +5743,7 @@ These are examples only; a Standard Program may not assume any These are examples only; a Standard Program may not assume any particular meaning for the individual stack items returned by particular meaning for the individual stack items returned by \word{SAVE-INPUT}. \word{SAVE-INPUT}. \pagebreak \end{rationale} \end{rationale} \begin{testing}\ttfamily \begin{testing}\ttfamily Loading Loading @@ -5911,7 +5905,7 @@ a mode flag that is tested by the subsequent execution of a mode flag that is tested by the subsequent execution of \param{name}. Standard programs must use \word{TO} as if it \param{name}. Standard programs must use \word{TO} as if it parses. Therefore \word{TO} and \param{name} must be 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} \end{rationale} \begin{testing} % T.6.2.2295 TO \begin{testing} % T.6.2.2295 TO Loading @@ -5920,6 +5914,7 @@ \end{worddef} \end{worddef} \enlargethispage{6ex} \begin{worddef}{2298}{TRUE} \begin{worddef}{2298}{TRUE} \item \stack{}{true} \item \stack{}{true} Loading diff.tex +138 −178 File changed.Preview size limit exceeded, changes collapsed. Show changes double.tex +1 −0 Original line number Original line Diff line number Diff line Loading @@ -664,6 +664,7 @@ Extensions word sets. \end{worddef} \end{worddef} \pagebreak \subsection{Double-Number extension words} % 8.6.2 \subsection{Double-Number extension words} % 8.6.2 \extended \extended Loading exception.tex +2 −8 Original line number Original line Diff line number Diff line Loading @@ -16,14 +16,6 @@ The \word{THROW} values \{-255{\ldots}-1\} shall be used only as assigned by this standard. The values \{-4095{\ldots}-256\} assigned by this standard. The values \{-4095{\ldots}-256\} shall be used only as assigned by a system. shall be used only as assigned by a system. \remove{x:throw-iors}{% If the File-Access or Memory-Allocation word sets are implemented, it is recommended that the non-zero values of \emph{ior} lie within the range of system \word{THROW} values, as defined above. In an operating-system environment, this can sometimes be accomplished by ``biasing'' the range of operating-system exception codes to fall within the \word{THROW} range.} Programs shall not define values for use with \word{THROW} in the Programs shall not define values for use with \word{THROW} in the range \{-4095{\ldots}-1\}. range \{-4095{\ldots}-1\}. Loading Loading @@ -244,6 +236,7 @@ The phrase ``Requiring the Exception Extensions word set'' shall be appended to the label of Standard Programs that require the system appended to the label of Standard Programs that require the system to provide all of the Exception and Exception Extensions word sets. to provide all of the Exception and Exception Extensions word sets. \pagebreak \section{Glossary} % 9.6 \section{Glossary} % 9.6 \subsection{Exception words} % 9.6.1 \subsection{Exception words} % 9.6.1 Loading Loading @@ -450,6 +443,7 @@ to provide all of the Exception and Exception Extensions word sets. \end{worddef} \end{worddef} \pagebreak \subsection{Exception extension words} % 9.6.2 \subsection{Exception extension words} % 9.6.2 \extended \extended Loading facility.tex +34 −95 Original line number Original line Diff line number Diff line Loading @@ -173,6 +173,7 @@ to provide all of the Facility and Facility Extensions word sets. the application must use \word{KEYq} and \word[core]{KEY} only the application must use \word{KEYq} and \word[core]{KEY} only when it wishes to discard non-character events until a valid when it wishes to discard non-character events until a valid character is received. character is received. \pagebreak \end{rationale} \end{rationale} \end{worddef} \end{worddef} Loading Loading @@ -399,7 +400,7 @@ to provide all of the Facility and Facility Extensions word sets. \stack{addr_1}{addr_2} \stack{addr_1}{addr_2} Add the \param{offset} calculated during the compile time action to Add the \param{offset} calculated during the compile time action to \param{addr_1} giving the \remove{ed13}{character aligned} address \param{addr_2}. \param{addr_1} giving the address \param{addr_2}. \see \wref{facility:+FIELD}{+FIELD}, \see \wref{facility:+FIELD}{+FIELD}, \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \\ \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \\ Loading Loading @@ -473,7 +474,7 @@ to provide all of the Facility and Facility Extensions word sets. % ------------------------------------------------------------------- % ------------------------------------------------------------------- \pagebreak \begin{worddef}[EKEYtoFKEY]{1306}[40]{EKEY>FKEY}[e-key-to-f-key][X:ekeys] \begin{worddef}[EKEYtoFKEY]{1306}[40]{EKEY>FKEY}[e-key-to-f-key][X:ekeys] \item \stack{x}{u flag} \item \stack{x}{u flag} Loading Loading @@ -519,45 +520,15 @@ to provide all of the Facility and Facility Extensions word sets. \begin{rationale} % A.10.6.2.---- EKEY>FKEY \begin{rationale} % A.10.6.2.---- EKEY>FKEY \cbstart\patch{ed13} \sout{% This words has been provided to allow for systems which may not be able to interpret the value returned from \word{EKEY} directly. A simple implementation for a system which is capable of interpreting the value returned from \word{EKEY} would be:} \begin{quote} \ttfamily \sout{\word{:} \word{EKEYtoFKEY} \word{p} u1 -{}- u2 flag )} \\ \tab \sout{\word{DUP} \word{EKEYtoCHAR} \word{NIP} \word{0=} \word{;}} \end{quote} \sout{% \word{EKEY} produces an abstract cell type for a keyboard The value returned from \word{EKEYtoFKEY} can be interpreted event (e.g., a keyboard scan code). \word{EKEYtoFKEY} checks via a set of pre-defined constants and masks. This provides if such an event corresponds to a special (non-graphic) key the application programmer with the ability to process the press, and if so, returns a code for the special key press. non-ASCII keys in a standard way. Note however, that not all The encoding of special keys (returned by \word{EKEYtoFKEY}) keyboards provide these keys. Indeed, some devices will not may be different from the encoding of these keys as keyboard have a keyboard. A standard program should be written in such events (input to \word{EKEYtoFKEY}). a way that they will continue to work without these additional keys. Albeit with a limited or reduced functionality.} \sout{% The \texttt{K-}{\ldots} words produce the same values that the sequence \word{EKEY} \word{EKEYtoFKEY} may produce when the user presses the corresponding keys. Note that some systems may lack some of the keys, or the system the capability to report them. Programs should be written such that they continue to work (although less conveniently or with less functionality) if these key combinations cannot be produced.} \uline{% \word{EKEY} produces an abstract cell type for a keyboard event (e.g., a keyboard scan code). \word{EKEYtoFKEY} checks if such an event corresponds to a special (non-graphic) key press, and if so, returns a code for the special key press. The encoding of special keys (returned by \word{EKEYtoFKEY}) may be different from the encoding of these keys as keyboard events (input to \word{EKEYtoFKEY}).} Typical Use: Typical Use: Loading @@ -576,83 +547,50 @@ to provide all of the Facility and Facility Extensions word sets. \word{THEN} \word{THEN} \end{quote} \end{quote} \uline{% The codes for the special keys are system-dependent, but this The codes for the special keys are system-dependent, but this standard provides words for getting the key codes for a number standard provides words for getting the key codes for a number of keys:} of keys: \begin{center} \begin{center} \begin{tabular}{llcll} \begin{tabular}{llcll} \hline \hline \uline{Word} & \uline{Key} & \hspace{2em} & \uline{Word} & \uline{Key} \\ \hline\hline Word & Key & \hspace{2em} & Word & Key \\ \hline\hline \uline{\word{K-F1}} & \uline{F1} & & \uline{\word{K-LEFT}} & \uline{cursor left} \\ \word{K-F1} & F1 & & \word{K-LEFT} & cursor left \\ \uline{\word{K-F2}} & \uline{F2} & & \uline{\word{K-RIGHT}} & \uline{cursor right} \\ \word{K-F2} & F2 & & \word{K-RIGHT} & cursor right \\ \uline{\word{K-F3}} & \uline{F3} & & \uline{\word{K-UP}} & \uline{cursor up} \\ \word{K-F3} & F3 & & \word{K-UP} & cursor up \\ \uline{\word{K-F4}} & \uline{F4} & & \uline{\word{K-DOWN}} & \uline{cursor down} \\ \word{K-F4} & F4 & & \word{K-DOWN} & cursor down \\ \uline{\word{K-F5}} & \uline{F5} & & \uline{\word{K-HOME}} & \uline{home or Pos1} \\ \word{K-F5} & F5 & & \word{K-HOME} & home or Pos1 \\ \uline{\word{K-F6}} & \uline{F6} & & \uline{\word{K-END}} & \uline{End} \\ \word{K-F6} & F6 & & \word{K-END} & End \\ \uline{\word{K-F7}} & \uline{F7} & & \uline{\word{K-PRIOR}} & \uline{PgUp or Prior} \\ \word{K-F7} & F7 & & \word{K-PRIOR} & PgUp or Prior \\ \uline{\word{K-F8}} & \uline{F8} & & \uline{\word{K-NEXT} } & \uline{PgDn or Next} \\ \word{K-F8} & F8 & & \word{K-NEXT} & PgDn or Next \\ \uline{\word{K-F9}} & \uline{F9} & & \uline{\word{K-INSERT}} & \uline{Insert} \\ \word{K-F9} & F9 & & \word{K-INSERT} & Insert \\ \uline{\word{K-F10}} & \uline{F10} & & \uline{\word{K-DELETE}} & \uline{Delete} \\ \word{K-F10} & F10 & & \word{K-DELETE} & Delete \\ \uline{\word{K-F11}} & \uline{F11} \\ \word{K-F11} & F11 \\ \uline{\word{K-F12}} & \uline{F12} \\ \hline \word{K-F12} & F12 \\ \hline \end{tabular} \end{tabular} \end{center} \end{center} \uline{% In addition, you can get codes for shifted variants of these In addition, you can get codes for shifted variants of these keys by keys by \word{OR}ing with \word{K-SHIFT-MASK}, \word{K-CTRL-MASK} \word{OR}ing with \word{K-SHIFT-MASK}, \word{K-CTRL-MASK} and/or \word{K-ALT-MASK}, e.g. \word{K-CTRL-MASK} and/or \word{K-ALT-MASK}, e.g. \word{K-CTRL-MASK} \word{K-ALT-MASK} \word{OR} \word{K-DELETE} \word{OR}. \word{K-ALT-MASK} \word{OR} \word{K-DELETE} \word{OR}. The masks for the shift keys are: The masks for the shift keys are: } \begin{center} \begin{center} \begin{tabular}{ll} \begin{tabular}{ll} \hline \hline \uline{Word} & \uline{Key} \\ \hline\hline Word & Key \\ \hline\hline \uline{\word{K-SHIFT-MASK}} & \uline{Shift} \\ \word{K-SHIFT-MASK} & Shift \\ \uline{\word{K-CTRL-MASK}} & \uline{Ctrl} \\ \word{K-CTRL-MASK} & Ctrl \\ \uline{\word{K-ALT-MASK}} & \uline{Alt} \\ \hline \word{K-ALT-MASK} & Alt \\ \hline \end{tabular} \end{tabular} \end{center} \end{center} \uline{% Note that not all of these keys are available on all systems, and not Note that not all of these keys are available on all systems, and not all combinations of keys and shift keys are available. Therefore all combinations of keys and shift keys are available. Therefore programs should be written such that they continue to work (although programs should be written such that they continue to work (although less conveniently or with less functionality) if these key combinations less conveniently or with less functionality) if these key combinations cannot be produced.} cannot be produced. \item[\sout{\word{EKEY} return values}] ~\\ \sout{ The intention behind \word{EKEY} was that it would return the implementation defined keyboard scan code. The implementation defined nature of the value means that a standard program may not use the value in any way, other than passing it on to \word{EKEYtoCHAR} to convert it into an ASCII character.} \sout{% \word{EKEYtoFKEY} has been designed to be used in a similar manner. It provides an implementation defined value which corresponds to non-ASCII keys, or a combination thereof. A standard program may check which key combination has been used via a set of pre-defined constants.} \item[\sout{Shift keys}] ~\\ \sout{Note that, as defined, the shift key masks (\wref{facility:K-SHIFT-MASK}{K-SHIFT-MASK}, \linebreak \wref{facility:K-CTRL-MASK}{K-CTRL-MASK} and \wref{facility:K-ALT-MASK}{K-ALT-MASK}) are only useful for recognizing shifted cursor and function keys, because these are the only values defined for use with \word{EKEYtoFKEY}. E.g., a standard program cannot recognize \textsc{Alt-T}, because no \word{EKEY} return value for \texttt{T} has been defined.} \cbend \end{rationale} \end{rationale} \begin{implement} % I.10.6.2.--- EKEY>FKEY \begin{implement} % I.10.6.2.--- EKEY>FKEY Loading Loading @@ -730,7 +668,7 @@ to provide all of the Facility and Facility Extensions word sets. \end{worddef} \end{worddef} % ------------------------------------- % ------------------------------------- \enlargethispage{2ex} \begin{worddef}{1336}{END-STRUCTURE}[][X:structures] \begin{worddef}{1336}{END-STRUCTURE}[][X:structures] \item \stack{struct-sys +n}{} \item \stack{struct-sys +n}{} Loading @@ -749,6 +687,7 @@ to provide all of the Facility and Facility Extensions word sets. \end{worddef} \end{worddef} \pagebreak \begin{worddef}{1518}{FIELD:}[field-colon][X:structures] \begin{worddef}{1518}{FIELD:}[field-colon][X:structures] \item \stack{n_1 "<spaces>name"}{n_2} \item \stack{n_1 "<spaces>name"}{n_2} Loading @@ -763,7 +702,7 @@ to provide all of the Facility and Facility Extensions word sets. \stack{addr_1}{addr_2} \stack{addr_1}{addr_2} Add the \param{offset} calculated during the compile time action Add the \param{offset} calculated during the compile time action to \param{addr_1} giving the \remove{ed13}{cell aligned} address \param{addr_2}. to \param{addr_1} giving the address \param{addr_2}. \see \wref{facility:+FIELD}{+FIELD}, \see \wref{facility:+FIELD}{+FIELD}, \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \\ \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \\ Loading Loading
core.tex +49 −54 Original line number Original line Diff line number Diff line Loading @@ -117,6 +117,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{0070}{'}[tick] \begin{worddef}{0070}{'}[tick] \item \stack{"<spaces>name"}{xt} \item \stack{"<spaces>name"}{xt} Loading Loading @@ -247,6 +248,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{0110}{*/MOD}[star-slash-mod] \begin{worddef}{0110}{*/MOD}[star-slash-mod] \item \stack{n_1 n_2 n_3}{n_4 n_5} \item \stack{n_1 n_2 n_3}{n_4 n_5} Loading Loading @@ -427,6 +429,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{0150}{,}[comma] \begin{worddef}{0150}{,}[comma] \item \stack{x}{} \item \stack{x}{} Loading Loading @@ -553,6 +556,7 @@ \end{worddef} \end{worddef} \enlargethispage{4ex} \begin{worddef}{0230}{/}[slash] \begin{worddef}{0230}{/}[slash] \item \stack{n_1 n_2}{n_3} \item \stack{n_1 n_2}{n_3} Loading Loading @@ -1130,6 +1134,7 @@ \end{worddef} \end{worddef} \enlargethispage{6ex} \begin{worddef}[toR]{0580}{>R}[to-r] \begin{worddef}[toR]{0580}{>R}[to-r] \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -1269,7 +1274,7 @@ special behavior. Insofar as such behavior is outside the special behavior. Insofar as such behavior is outside the standard, Standard Programs cannot depend upon it, but the standard, Standard Programs cannot depend upon it, but the committee doesn't wish to preclude it unnecessarily. 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. functionality is impaired by this restriction. It is recommended that all non-graphic characters be reserved It is recommended that all non-graphic characters be reserved Loading Loading @@ -1465,6 +1470,7 @@ \end{worddef} \end{worddef} \enlargethispage{6ex} \begin{worddef}{0770}{BL}[b-l] \begin{worddef}{0770}{BL}[b-l] \item \stack{}{char} \item \stack{}{char} Loading Loading @@ -1725,6 +1731,7 @@ \end{worddef} \end{worddef} \vspace*{-0.5ex} \begin{worddef}{1000}{CREATE} \begin{worddef}{1000}{CREATE} \item \stack{"<spaces>name"}{} \item \stack{"<spaces>name"}{} Loading Loading @@ -1766,6 +1773,7 @@ \end{worddef} \end{worddef} \vspace*{-0.5ex} \begin{worddef}{1170}{DECIMAL} \begin{worddef}{1170}{DECIMAL} \item \stack{}{} \item \stack{}{} Loading @@ -1777,6 +1785,7 @@ \end{worddef} \end{worddef} \vspace*{-0.5ex} \begin{worddef}{1200}{DEPTH} \begin{worddef}{1200}{DEPTH} \item \stack{}{+n} \item \stack{}{+n} Loading @@ -1790,7 +1799,8 @@ \end{testing} \end{testing} \end{worddef} \end{worddef} \vspace*{-0.5ex} \enlargethispage{10ex} \begin{worddef}{1240}{DO} \begin{worddef}{1240}{DO} \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading @@ -1803,6 +1813,7 @@ semantics are incomplete until resolved by a consumer of semantics are incomplete until resolved by a consumer of \param{do-sys} such as \word{LOOP}. \param{do-sys} such as \word{LOOP}. %\pagebreak \runtime \runtime \stack{n_1|u_1 n_2|u_2}{} \stack{n_1|u_1 n_2|u_2}{} \stack[R]{}{loop-sys} \stack[R]{}{loop-sys} Loading Loading @@ -1951,6 +1962,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{1310}{ELSE} \begin{worddef}{1310}{ELSE} \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -2073,6 +2085,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{1360}{EVALUATE} \begin{worddef}{1360}{EVALUATE} \item \stack{i*x c-addr u}{j*x} \item \stack{i*x c-addr u}{j*x} Loading Loading @@ -2173,6 +2186,7 @@ \end{worddef} \end{worddef} \enlargethispage{10ex} \begin{worddef}{1550}{FIND} \begin{worddef}{1550}{FIND} \item \stack{c-addr}{c-addr 0 | xt 1 | xt -1} \item \stack{c-addr}{c-addr 0 | xt 1 | xt -1} Loading Loading @@ -2356,6 +2370,7 @@ \end{worddef} \end{worddef} \enlargethispage{4ex} \begin{worddef}{1650}{HERE} \begin{worddef}{1650}{HERE} \item \stack{}{addr} \item \stack{}{addr} Loading Loading @@ -2649,7 +2664,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{1760}{LEAVE} \begin{worddef}{1760}{LEAVE} \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -2691,6 +2706,7 @@ \end{worddef} \end{worddef} \enlargethispage{4ex} \begin{worddef}{1780}{LITERAL} \begin{worddef}{1780}{LITERAL} \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -2977,6 +2993,7 @@ \end{worddef} \end{worddef} \enlargethispage{8ex} \begin{worddef}{1910}{NEGATE} \begin{worddef}{1910}{NEGATE} \item \stack{n_1}{n_2} \item \stack{n_1}{n_2} Loading Loading @@ -3139,6 +3156,7 @@ \end{worddef} \end{worddef} \enlargethispage{8ex} \begin{worddef}[Rfrom]{2060}{R>}[r-from] \begin{worddef}[Rfrom]{2060}{R>}[r-from] \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -3334,6 +3352,7 @@ \end{worddef} \end{worddef} \enlargethispage{4ex} \begin{worddef}[Sq]{2165}{S"}[s-quote] \begin{worddef}[Sq]{2165}{S"}[s-quote] \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -3782,6 +3801,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{2380}{UNLOOP} \begin{worddef}{2380}{UNLOOP} \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -3899,6 +3919,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{2430}{WHILE} \begin{worddef}{2430}{WHILE} \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -4163,6 +4184,7 @@ %\end{worddef} %\end{worddef} \enlargethispage{6ex} \begin{worddef}[.p]{0200}{.(}[dot-paren] \begin{worddef}[.p]{0200}{.(}[dot-paren] \compile \compile Perform the execution semantics given below. Perform the execution semantics given below. Loading Loading @@ -4272,6 +4294,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{0415}{2R@}[two-r-fetch] \begin{worddef}{0415}{2R@}[two-r-fetch] \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -4394,7 +4417,7 @@ \begin{rationale} % A.6.2.0620 ?DO \begin{rationale} % A.6.2.0620 ?DO Typical use: 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} \end{rationale} \begin{testing}\ttfamily \begin{testing}\ttfamily Loading Loading @@ -4552,7 +4575,7 @@ % ------------------------------------------------------------------- % ------------------------------------------------------------------- \enlargethispage{6ex} \begin{worddef}{0825}{BUFFER:}[buffer-colon][x:buffer] \begin{worddef}{0825}{BUFFER:}[buffer-colon][x:buffer] \item \stack{u "<spaces>name"}{} \item \stack{u "<spaces>name"}{} Loading Loading @@ -4755,6 +4778,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{0945}{COMPILE,}[compile-comma] \begin{worddef}{0945}{COMPILE,}[compile-comma] \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading @@ -4769,18 +4793,13 @@ \see \rref{core:COMPILE,}{}. \see \rref{core:COMPILE,}{}. \begin{rationale} % A.6.2.0945 COMPILE, \begin{rationale} % A.6.2.0945 COMPILE, \cbstart\patch{ed13} \word{COMPILE,} is the compilation equivalent of \word{EXECUTE}. \uline{\word{COMPILE,} is the compilation equivalent of \word{EXECUTE}.} \uline{% In traditional threaded-code implementations, compilation is In traditional threaded-code implementations, compilation is performed by \word{,} (comma). This usage is not portable; it performed by \word{,} (comma). This usage is not portable; it doesn't work for subroutine-threaded, native code, or doesn't work for subroutine-threaded, native code, or relocatable implementations. Use of \word{COMPILE,} is portable. relocatable implementations. Use of \word{COMPILE,} is portable. } \uline{% In most systems it is possible to implement \word{COMPILE,} so In most systems it is possible to implement \word{COMPILE,} so it will generate code that is optimized to the same extent as it will generate code that is optimized to the same extent as code that is generated by the normal compilation process. code that is generated by the normal compilation process. Loading @@ -4792,7 +4811,6 @@ the compilation token from the execution token. In these the compilation token from the execution token. In these implementations, \word{COMPILE,} might not generate code that implementations, \word{COMPILE,} might not generate code that is as efficient as normally compiled code. is as efficient as normally compiled code. } The intention is that \word{COMPILE,} can be used as follows to write The intention is that \word{COMPILE,} can be used as follows to write the classic interpreter/com\-piler loop: the classic interpreter/com\-piler loop: Loading @@ -4817,28 +4835,6 @@ Thus the interpretation semantics are left undefined, as \word{COMPILE,} Thus the interpretation semantics are left undefined, as \word{COMPILE,} will not be executed during interpretation. 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} \end{rationale} \begin{testing}\ttfamily \begin{testing}\ttfamily Loading Loading @@ -4977,6 +4973,7 @@ \end{worddef} \end{worddef} \pagebreak \begin{worddef}{1342}{ENDCASE}[end-case] \begin{worddef}{1342}{ENDCASE}[end-case] \interpret \interpret Interpretation semantics for this word are undefined. Interpretation semantics for this word are undefined. Loading Loading @@ -5155,6 +5152,7 @@ % =================================================================== % =================================================================== \enlargethispage{2ex} \begin{worddef}{1725}{IS}[][X:deferred] \begin{worddef}{1725}{IS}[][X:deferred] \interpret \interpret \stack{xt "<spaces>name"}{} \stack{xt "<spaces>name"}{} Loading Loading @@ -5239,6 +5237,7 @@ system to remember ``landmark information'' in advance that system to remember ``landmark information'' in advance that specifically marks the spots where the dictionary may at some specifically marks the spots where the dictionary may at some future time have to be rearranged. future time have to be rearranged. \pagebreak \end{rationale} \end{rationale} \end{worddef} \end{worddef} Loading Loading @@ -5400,12 +5399,6 @@ \item The temporary buffer is typically overwritten by the \item The temporary buffer is typically overwritten by the next use of \word{WORD}. 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} \end{enumerate} The need for \word{WORD} has largely been eliminated by The need for \word{WORD} has largely been eliminated by Loading Loading @@ -5750,6 +5743,7 @@ These are examples only; a Standard Program may not assume any These are examples only; a Standard Program may not assume any particular meaning for the individual stack items returned by particular meaning for the individual stack items returned by \word{SAVE-INPUT}. \word{SAVE-INPUT}. \pagebreak \end{rationale} \end{rationale} \begin{testing}\ttfamily \begin{testing}\ttfamily Loading Loading @@ -5911,7 +5905,7 @@ a mode flag that is tested by the subsequent execution of a mode flag that is tested by the subsequent execution of \param{name}. Standard programs must use \word{TO} as if it \param{name}. Standard programs must use \word{TO} as if it parses. Therefore \word{TO} and \param{name} must be 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} \end{rationale} \begin{testing} % T.6.2.2295 TO \begin{testing} % T.6.2.2295 TO Loading @@ -5920,6 +5914,7 @@ \end{worddef} \end{worddef} \enlargethispage{6ex} \begin{worddef}{2298}{TRUE} \begin{worddef}{2298}{TRUE} \item \stack{}{true} \item \stack{}{true} Loading
double.tex +1 −0 Original line number Original line Diff line number Diff line Loading @@ -664,6 +664,7 @@ Extensions word sets. \end{worddef} \end{worddef} \pagebreak \subsection{Double-Number extension words} % 8.6.2 \subsection{Double-Number extension words} % 8.6.2 \extended \extended Loading
exception.tex +2 −8 Original line number Original line Diff line number Diff line Loading @@ -16,14 +16,6 @@ The \word{THROW} values \{-255{\ldots}-1\} shall be used only as assigned by this standard. The values \{-4095{\ldots}-256\} assigned by this standard. The values \{-4095{\ldots}-256\} shall be used only as assigned by a system. shall be used only as assigned by a system. \remove{x:throw-iors}{% If the File-Access or Memory-Allocation word sets are implemented, it is recommended that the non-zero values of \emph{ior} lie within the range of system \word{THROW} values, as defined above. In an operating-system environment, this can sometimes be accomplished by ``biasing'' the range of operating-system exception codes to fall within the \word{THROW} range.} Programs shall not define values for use with \word{THROW} in the Programs shall not define values for use with \word{THROW} in the range \{-4095{\ldots}-1\}. range \{-4095{\ldots}-1\}. Loading Loading @@ -244,6 +236,7 @@ The phrase ``Requiring the Exception Extensions word set'' shall be appended to the label of Standard Programs that require the system appended to the label of Standard Programs that require the system to provide all of the Exception and Exception Extensions word sets. to provide all of the Exception and Exception Extensions word sets. \pagebreak \section{Glossary} % 9.6 \section{Glossary} % 9.6 \subsection{Exception words} % 9.6.1 \subsection{Exception words} % 9.6.1 Loading Loading @@ -450,6 +443,7 @@ to provide all of the Exception and Exception Extensions word sets. \end{worddef} \end{worddef} \pagebreak \subsection{Exception extension words} % 9.6.2 \subsection{Exception extension words} % 9.6.2 \extended \extended Loading
facility.tex +34 −95 Original line number Original line Diff line number Diff line Loading @@ -173,6 +173,7 @@ to provide all of the Facility and Facility Extensions word sets. the application must use \word{KEYq} and \word[core]{KEY} only the application must use \word{KEYq} and \word[core]{KEY} only when it wishes to discard non-character events until a valid when it wishes to discard non-character events until a valid character is received. character is received. \pagebreak \end{rationale} \end{rationale} \end{worddef} \end{worddef} Loading Loading @@ -399,7 +400,7 @@ to provide all of the Facility and Facility Extensions word sets. \stack{addr_1}{addr_2} \stack{addr_1}{addr_2} Add the \param{offset} calculated during the compile time action to Add the \param{offset} calculated during the compile time action to \param{addr_1} giving the \remove{ed13}{character aligned} address \param{addr_2}. \param{addr_1} giving the address \param{addr_2}. \see \wref{facility:+FIELD}{+FIELD}, \see \wref{facility:+FIELD}{+FIELD}, \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \\ \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \\ Loading Loading @@ -473,7 +474,7 @@ to provide all of the Facility and Facility Extensions word sets. % ------------------------------------------------------------------- % ------------------------------------------------------------------- \pagebreak \begin{worddef}[EKEYtoFKEY]{1306}[40]{EKEY>FKEY}[e-key-to-f-key][X:ekeys] \begin{worddef}[EKEYtoFKEY]{1306}[40]{EKEY>FKEY}[e-key-to-f-key][X:ekeys] \item \stack{x}{u flag} \item \stack{x}{u flag} Loading Loading @@ -519,45 +520,15 @@ to provide all of the Facility and Facility Extensions word sets. \begin{rationale} % A.10.6.2.---- EKEY>FKEY \begin{rationale} % A.10.6.2.---- EKEY>FKEY \cbstart\patch{ed13} \sout{% This words has been provided to allow for systems which may not be able to interpret the value returned from \word{EKEY} directly. A simple implementation for a system which is capable of interpreting the value returned from \word{EKEY} would be:} \begin{quote} \ttfamily \sout{\word{:} \word{EKEYtoFKEY} \word{p} u1 -{}- u2 flag )} \\ \tab \sout{\word{DUP} \word{EKEYtoCHAR} \word{NIP} \word{0=} \word{;}} \end{quote} \sout{% \word{EKEY} produces an abstract cell type for a keyboard The value returned from \word{EKEYtoFKEY} can be interpreted event (e.g., a keyboard scan code). \word{EKEYtoFKEY} checks via a set of pre-defined constants and masks. This provides if such an event corresponds to a special (non-graphic) key the application programmer with the ability to process the press, and if so, returns a code for the special key press. non-ASCII keys in a standard way. Note however, that not all The encoding of special keys (returned by \word{EKEYtoFKEY}) keyboards provide these keys. Indeed, some devices will not may be different from the encoding of these keys as keyboard have a keyboard. A standard program should be written in such events (input to \word{EKEYtoFKEY}). a way that they will continue to work without these additional keys. Albeit with a limited or reduced functionality.} \sout{% The \texttt{K-}{\ldots} words produce the same values that the sequence \word{EKEY} \word{EKEYtoFKEY} may produce when the user presses the corresponding keys. Note that some systems may lack some of the keys, or the system the capability to report them. Programs should be written such that they continue to work (although less conveniently or with less functionality) if these key combinations cannot be produced.} \uline{% \word{EKEY} produces an abstract cell type for a keyboard event (e.g., a keyboard scan code). \word{EKEYtoFKEY} checks if such an event corresponds to a special (non-graphic) key press, and if so, returns a code for the special key press. The encoding of special keys (returned by \word{EKEYtoFKEY}) may be different from the encoding of these keys as keyboard events (input to \word{EKEYtoFKEY}).} Typical Use: Typical Use: Loading @@ -576,83 +547,50 @@ to provide all of the Facility and Facility Extensions word sets. \word{THEN} \word{THEN} \end{quote} \end{quote} \uline{% The codes for the special keys are system-dependent, but this The codes for the special keys are system-dependent, but this standard provides words for getting the key codes for a number standard provides words for getting the key codes for a number of keys:} of keys: \begin{center} \begin{center} \begin{tabular}{llcll} \begin{tabular}{llcll} \hline \hline \uline{Word} & \uline{Key} & \hspace{2em} & \uline{Word} & \uline{Key} \\ \hline\hline Word & Key & \hspace{2em} & Word & Key \\ \hline\hline \uline{\word{K-F1}} & \uline{F1} & & \uline{\word{K-LEFT}} & \uline{cursor left} \\ \word{K-F1} & F1 & & \word{K-LEFT} & cursor left \\ \uline{\word{K-F2}} & \uline{F2} & & \uline{\word{K-RIGHT}} & \uline{cursor right} \\ \word{K-F2} & F2 & & \word{K-RIGHT} & cursor right \\ \uline{\word{K-F3}} & \uline{F3} & & \uline{\word{K-UP}} & \uline{cursor up} \\ \word{K-F3} & F3 & & \word{K-UP} & cursor up \\ \uline{\word{K-F4}} & \uline{F4} & & \uline{\word{K-DOWN}} & \uline{cursor down} \\ \word{K-F4} & F4 & & \word{K-DOWN} & cursor down \\ \uline{\word{K-F5}} & \uline{F5} & & \uline{\word{K-HOME}} & \uline{home or Pos1} \\ \word{K-F5} & F5 & & \word{K-HOME} & home or Pos1 \\ \uline{\word{K-F6}} & \uline{F6} & & \uline{\word{K-END}} & \uline{End} \\ \word{K-F6} & F6 & & \word{K-END} & End \\ \uline{\word{K-F7}} & \uline{F7} & & \uline{\word{K-PRIOR}} & \uline{PgUp or Prior} \\ \word{K-F7} & F7 & & \word{K-PRIOR} & PgUp or Prior \\ \uline{\word{K-F8}} & \uline{F8} & & \uline{\word{K-NEXT} } & \uline{PgDn or Next} \\ \word{K-F8} & F8 & & \word{K-NEXT} & PgDn or Next \\ \uline{\word{K-F9}} & \uline{F9} & & \uline{\word{K-INSERT}} & \uline{Insert} \\ \word{K-F9} & F9 & & \word{K-INSERT} & Insert \\ \uline{\word{K-F10}} & \uline{F10} & & \uline{\word{K-DELETE}} & \uline{Delete} \\ \word{K-F10} & F10 & & \word{K-DELETE} & Delete \\ \uline{\word{K-F11}} & \uline{F11} \\ \word{K-F11} & F11 \\ \uline{\word{K-F12}} & \uline{F12} \\ \hline \word{K-F12} & F12 \\ \hline \end{tabular} \end{tabular} \end{center} \end{center} \uline{% In addition, you can get codes for shifted variants of these In addition, you can get codes for shifted variants of these keys by keys by \word{OR}ing with \word{K-SHIFT-MASK}, \word{K-CTRL-MASK} \word{OR}ing with \word{K-SHIFT-MASK}, \word{K-CTRL-MASK} and/or \word{K-ALT-MASK}, e.g. \word{K-CTRL-MASK} and/or \word{K-ALT-MASK}, e.g. \word{K-CTRL-MASK} \word{K-ALT-MASK} \word{OR} \word{K-DELETE} \word{OR}. \word{K-ALT-MASK} \word{OR} \word{K-DELETE} \word{OR}. The masks for the shift keys are: The masks for the shift keys are: } \begin{center} \begin{center} \begin{tabular}{ll} \begin{tabular}{ll} \hline \hline \uline{Word} & \uline{Key} \\ \hline\hline Word & Key \\ \hline\hline \uline{\word{K-SHIFT-MASK}} & \uline{Shift} \\ \word{K-SHIFT-MASK} & Shift \\ \uline{\word{K-CTRL-MASK}} & \uline{Ctrl} \\ \word{K-CTRL-MASK} & Ctrl \\ \uline{\word{K-ALT-MASK}} & \uline{Alt} \\ \hline \word{K-ALT-MASK} & Alt \\ \hline \end{tabular} \end{tabular} \end{center} \end{center} \uline{% Note that not all of these keys are available on all systems, and not Note that not all of these keys are available on all systems, and not all combinations of keys and shift keys are available. Therefore all combinations of keys and shift keys are available. Therefore programs should be written such that they continue to work (although programs should be written such that they continue to work (although less conveniently or with less functionality) if these key combinations less conveniently or with less functionality) if these key combinations cannot be produced.} cannot be produced. \item[\sout{\word{EKEY} return values}] ~\\ \sout{ The intention behind \word{EKEY} was that it would return the implementation defined keyboard scan code. The implementation defined nature of the value means that a standard program may not use the value in any way, other than passing it on to \word{EKEYtoCHAR} to convert it into an ASCII character.} \sout{% \word{EKEYtoFKEY} has been designed to be used in a similar manner. It provides an implementation defined value which corresponds to non-ASCII keys, or a combination thereof. A standard program may check which key combination has been used via a set of pre-defined constants.} \item[\sout{Shift keys}] ~\\ \sout{Note that, as defined, the shift key masks (\wref{facility:K-SHIFT-MASK}{K-SHIFT-MASK}, \linebreak \wref{facility:K-CTRL-MASK}{K-CTRL-MASK} and \wref{facility:K-ALT-MASK}{K-ALT-MASK}) are only useful for recognizing shifted cursor and function keys, because these are the only values defined for use with \word{EKEYtoFKEY}. E.g., a standard program cannot recognize \textsc{Alt-T}, because no \word{EKEY} return value for \texttt{T} has been defined.} \cbend \end{rationale} \end{rationale} \begin{implement} % I.10.6.2.--- EKEY>FKEY \begin{implement} % I.10.6.2.--- EKEY>FKEY Loading Loading @@ -730,7 +668,7 @@ to provide all of the Facility and Facility Extensions word sets. \end{worddef} \end{worddef} % ------------------------------------- % ------------------------------------- \enlargethispage{2ex} \begin{worddef}{1336}{END-STRUCTURE}[][X:structures] \begin{worddef}{1336}{END-STRUCTURE}[][X:structures] \item \stack{struct-sys +n}{} \item \stack{struct-sys +n}{} Loading @@ -749,6 +687,7 @@ to provide all of the Facility and Facility Extensions word sets. \end{worddef} \end{worddef} \pagebreak \begin{worddef}{1518}{FIELD:}[field-colon][X:structures] \begin{worddef}{1518}{FIELD:}[field-colon][X:structures] \item \stack{n_1 "<spaces>name"}{n_2} \item \stack{n_1 "<spaces>name"}{n_2} Loading @@ -763,7 +702,7 @@ to provide all of the Facility and Facility Extensions word sets. \stack{addr_1}{addr_2} \stack{addr_1}{addr_2} Add the \param{offset} calculated during the compile time action Add the \param{offset} calculated during the compile time action to \param{addr_1} giving the \remove{ed13}{cell aligned} address \param{addr_2}. to \param{addr_1} giving the address \param{addr_2}. \see \wref{facility:+FIELD}{+FIELD}, \see \wref{facility:+FIELD}{+FIELD}, \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \\ \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \\ Loading