The $PUSH directive saves the current values of all local compiler directives on the settings stack. Up to 20 sets of settings can be stored on the stack.
The settings can be restored from the stack using the $POP directive (see section 1.2.62, page 167).
Note that global settings (search paths etc.) are not saved by this directive.
The settings stack is preserved across units, i.e. when the compiler starts compiling a new unit, the stack is not emptied.