Paul Gilmartin noted:
>> And I have an example where base and displacement are
>> successfully evaluated in an R[SX] instruction where an
>> S-constant with the same argument in apparently the same
>> context causes an error.
and later posted this example:
R:2 00000 2 USING *,R2
000000 4140 2048 00048 3 LA R4,=F'42'
000004 4 DC S(=F'42')
** ASMA030E Invalid literal usage - =F'42')
** ASMA435I Record 4 in user.NEGD64.JOB07226.D0000101.? on volume:
The reason the literal is invalid in the S-type (or similar) constant is
that parsing it would require recursive entry into the DC operand
processor.
Two observations: (
(1) Given the extreme constraints on early assemblers (e.g. handle the full
language in 18K memory), it was quite reasonable to limit such syntax.
(2) Since a literal is just a convenient name for a constant, the same
function as in statement 4 above could be achieved by writing
DC S(F42) followed by
F42 DC F'42'
John Ehrman