x '<spaces> name' -
Create a variable 'name' with an initial value x. Use TO and VALUE as a faster and neater way to implement variables. In assembler you can access the variable XYZ defined by 0 VALUE XYZ like this:
' XYZ 2+ @ )) R3 MOVI,
\ reads content of
\ variable to R3
name EXECUTION: - x
Place x on the stack. The value of x is that given when name was created, until the phrase x TO name is executed, causing a new value of x to be associated with name. At power-up of a stand-alone system TO must be used to avoid x being indeterminate.
Create a definition for name. Reserve one cell of data space (which is not initialised).
name EXECUTION: - aa
aa is the address of the reserved cell. A program should initialise its contents.
A user variable pointing at the next RAM cell for allocation with VARIABLE . It is initialised to hex FDF6 (8800 with TDS2020DV) at power-up but can be changed to any even RAM address in the first 64k bytes.
- 28 (hex)
SYNTAX: CODE cccc
. VS IF, . THEN, . END-CODE
Assembler word. Condition code for use before IF, WHILE, and UNTIL, - see IF, . The IF, is true when in the status register V = 1.
Assembler word. Sets operand size to 16 bits (word). Use only in a CODE definition and as first word in an instruction. See also B . E.g.
W $FF00 )) R3 ADD, \ Add word
\ at hex FF00 & FF01 to R3
Set non-volatile clock chip PCF8583 on the TDS2020F from the on-board time system. For example the on-board clock date and time can be set like this:
25.12.02 NOW 09.00.00 HRS W
In USA use:
12.25.02 NOW etc.
Set the on-board time system from the PCF8583 non-volatile clock on the TDS2020F. The variables TICKS MINS and DAYS are adjusted. Once this is done date and time are available via .DATE and .TIME (as well as other words).
Suspend operations for n units of time (u = 1 to 65535). Each unit is approximately 26�s (54�s with TDS2020DV) but a bit larger for small u. The watchdog timers are serviced but nothing else happens. See also MS and REST .
- File #EXTEND.TDS needed -
Sets n wait states per microprocessor cycle time. By default there are no wait states but slow peripherals may need them. The number of wait states depends on the access time of the device:
Resets both the internal and external watchdog timers. This, and machine code equivalents, are included in most Forth branching words such as DO LOOP +LOOP UNTIL MS etc. so WDT will normally not be needed. If the TDS2020F resets itself without showing any error message then the external watchdog has timed out 426.66ms since it was last serviced. When the internal watchdog operates the message WATCHDOG is displayed. To service the watchdogs in assembler code:
COMPILATION: dest n - orig 2 dest n
Put the location of a new unresolved forward reference orig on to the stack under the existing dest. Append the run-time action below to the current definition. The structure will be incomplete until orig and dest are resolved, e.g. by REPEAT . The other stack items help the compiler detect syntax errors.
RUN-TIME: x -
If x is zero continue execution at the location specified by the resolution of orig, e.g. after the next REPEAT .
addr1 - addr1 addr2
Assembler word. Used in a structure like: BEGIN, . xx WHILE, . REPEAT, . This is the most general form of loop. Despite its high structure it assembles to simple machine code-no extra op codes. xx is a condition code like EQ . See IF, . Use only in a CODE definition.
A user variable containing the maximum number of letters saved in compilation of a definition's name. Range is 1 to 31. The name's actual character count and its letters, up to the number in WIDTH , are saved. The value may be changed at any time within the limits given. The default width is 31.
Blanks alphanumeric LCD display and restores character pointer in variable AT to the first position. See AT and 0AT .
n1 n2 n3 - flag or
u1 u2 u3 - flag
Perform a comparison of a test value n1 with a lower limit n2 and a upper limit n3 returning true if n1>= n2 and n1< n3. Analogously also for unsigned parameters.
char '<chars>ccc<char>' - ca
Skip leading delimiters. Parse ccc delimited by char. ca is the address of a transient region containing the parsed word as a counted string. A space, not included in the count, follows. If the parse area was empty the string has zero length. Maximum string length trimmed to 255 characters.
List the definition names.
Assembler instruction, see assembler section and XCH in Programming Manual. Syntax example:
R2 R3 XCH, \ Exchange
\ registers R2 and R3.
\ Must be word mode.
x1 x2 - x3
x3 is the exclusive 'or' of x1 with x2.
Assembler instruction, see assembler section and XOR in Programming Manual. Syntax example:
R2 R3 XOR, \ Exclusive OR 16
\ bits of R2 with all 16
\ bits of R3, result to R3
Assembler instruction, see assembler section and XORC in Programming Manual. Syntax example:
B 1 ## CCR XORC, \ Exclusive
\ OR immediate 1 with
\ condition code register.
\ i.e. invert carry flag
ca n -
Clear bit n (0 to 7) at address ca. Opposite is ONE .
Perform the execution action shown below.
Enter interpretation state. [ is an immediate word.
COMPILATION: '<spaces>name' -
Parse name delimited by space. Find name in dictionary and append run-time action shown below to current definition.
RUN-TIME: - xt
Place name's execution token xt on the stack. The execution token returned by the compiled phrase ['] xxx is the same value returned by ' xxx outside the compilation state.
- File #ANS.TDS needed -
COMPILATION: '<spaces>name' -
Parse name, delimited by a space. Append the run-time action below to the current definition. Either "x or [CHAR] x in a definition will return the ASCII value of x on the stack but only the latter is ANS Forth.
RUN-TIME: - char
Place char, the value of the first character of name, on the stack.
- File #ANS.TDS needed -
Parse name delimited by space. Find name in dictionary and append name's run-time action to current definition. POSTPONE is usually to be preferred.
Perform the execution action shown below. Use \ to make the rest of a line a comment.
EXECUTION: 'ccc<eol>' -
Parse and discard the remainder of the parse area. \ is an immediate word.
Enter compilation state.
This is a set of words ^@ ^A ^B etc. to put numbers equivalent to ASCII control characters on the stack. The above leave 0, 1 and 2 respectively for example. More convenient and giving better documentation than the number equivalent. See also "x .