Skip to content

Commit b05efef

Browse files
committed
IFSTASHED_HERE
1 parent 22b5807 commit b05efef

File tree

4 files changed

+14
-0
lines changed

4 files changed

+14
-0
lines changed

EXRAIL2.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,10 @@ void RMFT2::loop2() {
829829
case OPCODE_IFSTASH:
830830
skipIf=Stash::get(operand)==0;
831831
break;
832+
833+
case OPCODE_IFSTASHED_HERE:
834+
skipIf=(Stash::get(operand) & 0x7FFF)!=loco;
835+
break;
832836

833837
#ifndef IO_NO_HAL
834838
case OPCODE_IFTTPOSITION: // do block if turntable at this position

EXRAIL2.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ enum OPCODE : byte {OPCODE_THROW,OPCODE_CLOSE,OPCODE_TOGGLE_TURNOUT,
9898
OPCODE_IFLOCO,
9999
OPCODE_IFTTPOSITION,
100100
OPCODE_IFSTASH,
101+
OPCODE_IFSTASHED_HERE,
101102
OPCODE_IFBITMAP_ALL,OPCODE_IFBITMAP_ANY,
102103
};
103104

EXRAIL2MacroReset.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
#undef IFRED
9191
#undef IFRESERVE
9292
#undef IFSTASH
93+
#undef IFSTASHED_HERE
9394
#undef IFTHROWN
9495
#undef IFTIMEOUT
9596
#undef IFTTPOSITION
@@ -637,6 +638,13 @@
637638
* @param stash_id
638639
*/
639640
#define IFSTASH(stash_id)
641+
/**
642+
* @def IFSTASHED_HERE(stash_id)
643+
* @brief Checks if given stash entry has the current loco
644+
* @see IF
645+
* @param stash_id
646+
*/
647+
#define IFSTASHED_HERE(stash_id)
640648
/**
641649
* @def IFTHROWN(turnout_id)
642650
* @brief Checks if given turnout is in THROWN state

EXRAILMacros.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,7 @@ int RMFT2::onLCCLookup[RMFT2::countLCCLookup];
510510
#define IFRED(signal_id) OPCODE_IFRED,V(signal_id),
511511
#define IFRESERVE(block) OPCODE_IFRESERVE,V(block),
512512
#define IFSTASH(stash_id) OPCODE_IFSTASH,V(stash_id),
513+
#define IFSTASHED_HERE(stash_id) OPCODE_IFSTASHED_HERE,V(stash_id),
513514
#define IFTHROWN(turnout_id) OPCODE_IFTHROWN,V(turnout_id),
514515
#define IFTIMEOUT OPCODE_IFTIMEOUT,0,0,
515516
#ifndef IO_NO_HAL

0 commit comments

Comments
 (0)