In C, when you use variable in interrupt routine, you have to declare variable with 'volatile' (so it always load/save variable in SRAM):
Is something similar needed in Free pascal and if it is, how to do it?
It is not (yet?) required, since FPC will reload global variables. As Thaddy mentioned,
volatile is available in the development branch, so eventually it will/may be added to a stable release. At that time it may be prudent to wrap data access with the volatile intrinsic (when necessary) to guard against overly aggressive compiler optimization interfering with the programmer's assumptions.