Proposal: New "Mode" directive for I6

In my endless tinkering I’ve found myself wanting to modify I6 veneer routines on occasion. Sometimes this can be accomplished with a Replace directive, but other times it cannot, because the compiler treats veneer code under different rules than normal source code.

For example, the “secret” ..# and ..& operators are allowed in veneer code but not in normal source code, so replacement of routines that make use of them is not possible. It also seems that strict mode guards are not installed when assembly for a veneer routine is generated.

It would be nice if there was a way to signal to the compiler that parts of source code should also be treated by the same rules as veneer code. As an illustration:

Mode veneer;

.. [assorted code not considered legal for normal source here] ...

Mode veneer off;

Would anybody else find this useful?

I’m gathering that the answer is no, this would not be widely useful. It would be a significant complication of the veneer mechanism, anyhow (which is already handled by a confusing global variable).

If you want to replicate veneer routines, you can write assembly or call the existing veneer routines directly. ..# and ..& are just calls to RL__Pr_VR() and RA__Pr_VR().

1 Like