From 478e9661bb2110b3bbb50c49c6ccb8ec30f565cf Mon Sep 17 00:00:00 2001 From: Asbelos Date: Tue, 21 Nov 2023 21:14:54 +0000 Subject: [PATCH] EXRAIL ling segment --- EXRAIL2.h | 2 +- EXRAILMacros.h | 16 ++++++++-------- FSH.h | 3 +++ 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/EXRAIL2.h b/EXRAIL2.h index 8f777f4..5249f72 100644 --- a/EXRAIL2.h +++ b/EXRAIL2.h @@ -203,7 +203,7 @@ private: uint16_t getOperand(byte n); static bool diag; - static const HIGHFLASH byte RouteCode[]; + static const HIGHFLASH3 byte RouteCode[]; static const HIGHFLASH int16_t SignalDefinitions[]; static byte flags[MAX_FLAGS]; static Print * LCCSerial; diff --git a/EXRAILMacros.h b/EXRAILMacros.h index 8edbd2b..9048973 100644 --- a/EXRAILMacros.h +++ b/EXRAILMacros.h @@ -121,14 +121,14 @@ const byte RMFT2::compileFeatures = 0 #include "EXRAIL2MacroReset.h" #undef ROUTE #define ROUTE(id, description) id, -const int16_t HIGHFLASH const RMFT2::routeIdList[]= { +const int16_t HIGHFLASH RMFT2::routeIdList[]= { #include "myAutomation.h" INT16_MAX}; // Pass 2a create throttle automation list #include "EXRAIL2MacroReset.h" #undef AUTOMATION #define AUTOMATION(id, description) id, -const int16_t HIGHFLASH const RMFT2::automationIdList[]= { +const int16_t HIGHFLASH RMFT2::automationIdList[]= { #include "myAutomation.h" INT16_MAX}; @@ -150,7 +150,7 @@ const FSH * RMFT2::getRouteDescription(int16_t id) { const int StringMacroTracker1=__COUNTER__; #define THRUNGE(msg,mode) \ case (__COUNTER__ - StringMacroTracker1) : {\ - static const char HIGHFLASH const thrunge[]=msg;\ + static const char HIGHFLASH thrunge[]=msg;\ strfar=(uint32_t)GETFARPTR(thrunge);\ tmode=mode;\ break;\ @@ -186,7 +186,7 @@ case (__COUNTER__ - StringMacroTracker1) : {\ #undef LCD #define LCD(id,msg) \ case (__COUNTER__ - StringMacroTracker1) : {\ - static const char HIGHFLASH const thrunge[]=msg;\ + static const char HIGHFLASH thrunge[]=msg;\ strfar=(uint32_t)GETFARPTR(thrunge);\ tmode=thrunge_lcd; \ lcdid=id;\ @@ -195,7 +195,7 @@ case (__COUNTER__ - StringMacroTracker1) : {\ #undef SCREEN #define SCREEN(display,id,msg) \ case (__COUNTER__ - StringMacroTracker1) : {\ - static const char HIGHFLASH const thrunge[]=msg;\ + static const char HIGHFLASH thrunge[]=msg;\ strfar=(uint32_t)GETFARPTR(thrunge);\ tmode=(thrunger)(thrunge_lcd+display); \ lcdid=id;\ @@ -274,7 +274,7 @@ const byte RMFT2::rosterNameCount=0 #include "EXRAIL2MacroReset.h" #undef ROSTER #define ROSTER(cabid,name,funcmap...) cabid, -const int16_t HIGHFLASH const RMFT2::rosterIdList[]={ +const int16_t HIGHFLASH RMFT2::rosterIdList[]={ #include "myAutomation.h" INT16_MAX}; @@ -314,7 +314,7 @@ const FSH * RMFT2::getRosterFunctions(int16_t id) { #undef VIRTUAL_SIGNAL #define VIRTUAL_SIGNAL(id) id,0,0,0, -const HIGHFLASH int16_t const RMFT2::SignalDefinitions[] = { +const HIGHFLASH int16_t RMFT2::SignalDefinitions[] = { #include "myAutomation.h" 0,0,0,0 }; @@ -503,7 +503,7 @@ int RMFT2::onLCCLookup[RMFT2::countLCCLookup]; // Build RouteCode const int StringMacroTracker2=__COUNTER__; -const HIGHFLASH byte const RMFT2::RouteCode[] = { +const HIGHFLASH3 byte RMFT2::RouteCode[] = { #include "myAutomation.h" OPCODE_ENDTASK,0,0,OPCODE_ENDEXRAIL,0,0 }; diff --git a/FSH.h b/FSH.h index d031935..280d37e 100644 --- a/FSH.h +++ b/FSH.h @@ -56,6 +56,7 @@ typedef __FlashStringHelper FSH; #if defined(ARDUINO_AVR_MEGA) || defined(ARDUINO_AVR_MEGA2560) // AVR_MEGA memory deliberately placed at end of link may need _far functions #define HIGHFLASH __attribute__((section(".fini2"))) +#define HIGHFLASH3 __attribute__((section(".fini3"))) #define GETFARPTR(data) pgm_get_far_address(data) #define GETHIGHFLASH(data,offset) pgm_read_byte_far(GETFARPTR(data)+offset) #define GETHIGHFLASHW(data,offset) pgm_read_word_far(GETFARPTR(data)+offset) @@ -63,6 +64,7 @@ typedef __FlashStringHelper FSH; // AVR_UNO/NANO runtime does not support _far functions so just use _near equivalent // as there is no progmem above 32kb anyway. #define HIGHFLASH PROGMEM +#define HIGHFLASH3 PROGMEM #define GETFARPTR(data) ((uint32_t)(data)) #define GETHIGHFLASH(data,offset) pgm_read_byte_near(GETFARPTR(data)+(offset)) #define GETHIGHFLASHW(data,offset) pgm_read_word_near(GETFARPTR(data)+(offset)) @@ -80,6 +82,7 @@ typedef __FlashStringHelper FSH; typedef char FSH; #define FLASH #define HIGHFLASH +#define HIGHFLASH3 #define GETFARPTR(data) ((uint32_t)(data)) #define GETFLASH(addr) (*(const byte *)(addr)) #define GETHIGHFLASH(data,offset) (*(const byte *)(GETFARPTR(data)+offset))