Next: Literal constants, Previous: W-expressions, Up: MIXAL
Besides user defined symbols, MIXAL programmers can use the so called
local symbols, which are symbols of the form [1-9][HBF]. A
local symbol nB refers to the address of the last previous
occurrence of nH as a label, while nF refers to the next
nH occurrence. Unlike user defined symbols, nH can appear
multiple times in the LABEL part of different MIXAL
instructions. The following code shows an instance of local symbols'
usage:
* line 1
1H LDA 100
* line 2: 1B refers to address of line 1, 3F refers to address of line 4
STA 3F,2(1B//2)
* line 3: redefinition of 1H
1H STZ
* line 4: 1B refers to address of line 3
3H JMP 1B
Note that a B local symbol never refers to a definition in its
own line, that is, in the following program:
ORIG 1999
ST NOP
3H EQU 69
3H ENTA 3B local symbol 3B refers to 3H in previous line
HLT
END ST
the contents of `rA' is set to 69 and not to 2001. An
specially tricky case occurs when using local symbols in conjunction
with ORIG pseudoinstructions. To wit1,
ORIG 1999
ST NOP
3H CON 10
ENT1 *
LDA 3B
** rI1 is 2001, rA is 10. So far so good!
3H ORIG 3B+1000
** at this point 3H equals 2003
** and the location counter equals 3000.
ENT2 *
LDX 3B
** rI2 contains 3000, rX contains 2003.
HLT
END ST
[1] The author wants to thank Philip E. King for pointing these two special cases of local symbol usage to him.