   file.close();
   if (autorun != NULL) {
     loadimage(NULL);
+    apply(0, autorun, NULL, NULL);
+  }
+#elif defined(FLASHWRITESIZE)
+  uint32_t addr = BASE_ADDRESS;
+  object *autorun = (object *)FlashReadInt(&addr);
+  if (autorun != NULL && (unsigned int)autorun != 0xFFFF) {
+    loadimage(nil);
     apply(0, autorun, NULL, NULL);
   }
 #else

/* uLisp AVR Version 3.5a - www.ulisp.com
   David Johnson-Davies - www.technoblogy.com - 4th March 2021

   Licensed under the MIT license: https://opensource.org/licenses/MIT
*/

int SDReadInt (File file) {
  uint8_t b0 = file.read(); uint8_t b1 = file.read();
  return b0 | b1<<8;
}
#elif defined(FLASHWRITESIZE)
uint8_t FlashReadByte (uint32_t *addr) {
  return Flash.readByte((*addr)++);
}

int FlashReadInt (uint32_t *addr) {
  int data = Flash.readWord(*addr);
  (*addr)++; (*addr)++;
  return data;
}
#else
int EEPROMReadInt (unsigned int *addr) {
