diff --git a/ulisp-stm32.ino b/ulisp-stm32.ino index c4bcd16..05c7dc7 100644 --- a/ulisp-stm32.ino +++ b/ulisp-stm32.ino @@ -15,7 +15,7 @@ const char LispLibrary[] PROGMEM = ""; // #define printgcs // #define sdcardsupport // #define lisplibrary - +#define officialstm32 // Includes // #include "LispLibrary.h" @@ -25,6 +25,11 @@ const char LispLibrary[] PROGMEM = ""; #include #include +#if defined(officialstm32) +#define WiringPinMode uint32_t +#define FLASH_BASE_ADDRESS 0x801D800 +#endif + #if defined(sdcardsupport) #include #define SDSIZE 172 @@ -380,22 +385,42 @@ void SDWriteInt (File file, int data) { } #else void FlashSetup () { +#if defined(officialstm32) + for (uint16_t i=0; i>8 & 0xFF); + FlashWriteByte(addr, data>>16 & 0xFF); FlashWriteByte(addr, data>>24 & 0xFF); +#else FlashWrite16(addr, data & 0xFFFF); FlashWrite16(addr, data>>16 & 0xFFFF); +#endif } #endif @@ -442,13 +467,20 @@ int saveimage (object *arg) { FlashWriteInt(&addr, (uintptr_t)GCStack); #if SYMBOLTABLESIZE > BUFFERSIZE FlashWriteInt(&addr, (uintptr_t)SymbolTop); +#if defined(officialstm32) + for (int i=0; i BUFFERSIZE SymbolTop = (char *)FlashReadInt(&addr); +#if defined(officialstm32) + for (int i=0; i>8 & 0xFF; } +#endif #endif for (int i=0; i