' nop TO 'PreMixTick
gregory.fth \ call marker to clear previous upload
marker gregory.fth \ and make a new marker again
0 VALUE OnFlag \ -- ) set if Lights are ON
12 VALUE LightTriggerInterval \ 12 seconds wait on holding ON
12 VALUE LightTrigger2Interval \ 12 seconds wait on holding ON
0 VALUE LastLight2Trigger \ --) trigger value
0 VALUE LastLightTrigger \ --) trigger value
0 VALUE currand \ --) random value
: Rand ( -- i ) \ random value in range 0 - 65535, no native random function.
currand 1664525 * 1013904223 + DUP TO currand
$FE42 w@ + ClockTime @ +
DUP wswap xor $FFFF and
;
: Darkness ( -- )
1 IdToEngineNr \ -- engine valid? ) locate layer A
IF \ -- engine ) if it exists,
1 6 EnGo \ result go to 1.6 in layer A
DROP \ ignore failures
ELSE
DROP \ -- ) ignore invalid engine
THEN
;
: SwitchOne ( -- )
1 GetInput \ -- val )
10 < \ trigger threshold value on input 1
IF \ -- ) if so,
ClockTime CELL+ @ \ -- time ) current time
LastLightTrigger - \ -- delta ) time since last trigger
LightTriggerInterval U< 0= \ -- flag )
IF \ -- if 1 second has passed
12 TO LightTriggerInterval \ -- if on) run thru cues 12 secs
ClockTime CELL+ @ TO LastLightTrigger
Rand
DUP .
15728 < \ -- this is 24 percent
IF
1 IdToEngineNr \ -- engine valid? ) locate layer A
IF \ -- engine ) if it exists,
1 1 EnGo \ result go to X.1 in layer A
1 TO OnFlag
DROP \ ignore failures
ELSE
DROP \ -- ) ignore invalid engine
THEN
THEN
THEN
ELSE
1 TO LightTriggerInterval \ -- ) allow immediate
new presses
OnFlag
1 =
IF \ -- ) test for if lights are on using your
switch
Darkness \ -- ) turn darkness cue on if released
0 TO OnFlag
THEN
THEN
;
: SwitchTwo ( -- )
5 GetInput \ -- val )
10 < \ triggering threshold
IF \ -- ) if so,
ClockTime CELL+ @ \ -- time ) current time
LastLight2Trigger - \ -- delta ) time since last
trigger
LightTrigger2Interval U< 0= \ -- flag )
IF \ -- if 1 second has passed
12 TO LightTrigger2Interval \ -- if on, run
thru cues 12 secs)
ClockTime CELL+ @ TO LastLight2Trigger
Rand
DUP .
15727 > \ -- this is 76 percent
IF
1 IdToEngineNr \ -- engine valid? ) locate layer A
IF \ -- engine ) if it exists,
1 1 EnGo \ result go to X.1 in layer A
2 TO OnFlag \ -- ) flag for 2nd switch ON
DROP \ ignore failures
ELSE
DROP \ -- ) ignore invalid engine
THEN
THEN
THEN
ELSE
1 TO LightTrigger2Interval \ -- ) allow immediate
new presses
OnFlag
2 =
IF \ -- ) test for if lights are on using number 2
switch
Darkness \ -- ) turn darkness cue on if released
0 TO OnFlag
THEN
THEN
;
: BothSwitches ( -- )
SwitchOne
SwitchTwo
;
' BothSwitches TO 'PreMixTick
|