The $PUSH directive saves the values of all local compiler directives that were stored 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.1.60, page 147).
Note that global settings (search paths etc.) are not saved by this directive.
The settings stack is preserved accross units, i.e. when the compiler starts compiling a new unit, the stack is not emptied.