 void setup()
 {
   Serial.begin(BAUDRATE);
+  
+  //copy program from EEPROM to RAM; EmbedVM can read program from RAM only
   for(int address = 0; address < PROGRAM_LENGTH; address++)
     memory[address] = EEPROM.read(address + PROGRAM_OFFSET);
-  embedvm_interrupt(&no::vm, PROGRAM_ENTRY);
+  embedvm_interrupt(&no::vm, PROGRAM_ENTRY); //start EmbedVM
 }
 
 void loop()

    memory[address] = value;
}

static int16_t callUserFunction(uint8_t function, uint8_t argc, int16_t *argv, void *ctx UNUSED)
{
  int16_t ret = 0;
  int i;

  if (function == 0) {
    stop = true;
    Serial.println("Called user function 0 => stop.");

    return ret;
  }

  //print user function call details (function ID, argument count, argument list)
  Serial.print("Called user function " + String(function) + " with " + String(argc) + " args:");
  for (i = 0; i < argc; i++) {
    Serial.print(" " + argv[i]);
    ret += argv[i];
