3.5 Data Space Selectors OTA compilers define three types of memory area, as shown in Table 10. These memory areas correspond to the normal set of code, initialised data, and uninitialised data. The IDATA and UDATA selectors affect the actions of the following words: ,, C,, ALLOT, HERE, and ALIGN (all described in Section 3.6), CREATE (see Section 3.7), and ALIGNED (see Section 4.2). These words act on the data area selected by the most recent use of IDATA or UDATA. The group of affected words is referred to as the data allocation words. When the compiler starts, the default is IDATA. IDATA i-data I ( - ) Vector the data allocation words to refer to initialised data space. This is the default behaviour for these words. UDATA u-data I ( - ) Vector the data allocation words to refer to uninitialised data space. An ambig- uous condition exists if the compiler attempts to fetch from, or store into, unini-tialised data space. Table 10: Memory areas in the VM Memory Type Selector Contents Compiler Access Initialised RAM IDATA Data initialised at power-up Read/Write Uninitialised Data UDATA Uninitialised data. May also None be used to define any other memory-mapped region. CODE, code-comma I ( x - ) Reserve one cell of initialised data space and store x in the cell. The address will be marked as a pointer to code space for relocation. CODE! code-store I ( x a-addr - ) Store x at a-addr in initialised data space. Mark a-addr as a pointer to code space. DATA! data-store I ( x a-addr - ) Store x at a-addr in initialised data space. Mark a-addr as a pointer to initial-ised data space. DATA, data-comma I ( x - ) Reserve one cell of initialised data space and store x in the cell. The address will be marked as a pointer to initialised data space for relocation. UDATA! u-data-store I ( x a-addr - ) Store x at a-addr in initialised data space. Mark a-addr as a pointer to unini-tialised data space. UDATA, u-data-comma I ( x - ) Reserve one cell of initialised data space and store x in the cell. The address will be marked as a pointer to uninitialised data space for relocation. EQU e-q-u H LIT ( x "name" - ) Skip leading space delimiters. Parse name delimited by a space. Create an INTERPRETER definition for name, with the execution behaviour defined below. Use of EQU to define name does not affect the target image. If name is refer-enced in a TARGET colon definition, the result will be a compiled literal giving name's value. An EQU may not be EXPORTed. name Execution:( - x ) Place the value x on the stack.