1. A programmable HVAC controller having non-volatile memory and random-access memory (RAM) comprising: a function block engine having at least one program, the function block engine being resident in the non-volatile memory; a block execution list identifying one or more function blocks, the block execution list being resident in the non-volatile memory; and a parameter and/or variable storage space being resident in the RAM; wherein the function block engine program is executed from the non-volatile memory.