It does look like "do_a" applies to an "and" while "do_o" applies to an "or". Thanks for the source code and inglewoodpete's help in narrowing it down. We can now replicate the issue and provoke the same simulation outcome in easier to analyse and debug code -
Code:
Do
If w0 = 0 Then
Exit
End If
Loop While w0 <> 0 Or w0 = 0
It seems to be related to the EXIT and having an AND/OR condition in the LOOP-WHILE/UNTIL. Remove either and it all works as expected.
Not sure what the issue is but I will log it and we'll take a look at it.
In the meantime, to allow your simulating to continue, you can replace your line 271 -
Code:
loop until B_event <> Ev_cleared and B_event <> Ev_null 'exit comes here
with -
Code:
#IfDef SIMULATING
If B_event <> Ev_cleared and B_event <> Ev_null Then
B_temp = 1
Else
B_temp = 0
End If
loop until B_temp = 1
#Else
loop until B_event <> Ev_cleared and B_event <> Ev_null 'exit comes here
#EndIf
or, I think, if I've got the logic right -
Code:
#IfDef SIMULATING
If B_event <> Ev_cleared and B_event <> Ev_null Then : Exit : End If
loop
#Else
loop until B_event <> Ev_cleared and B_event <> Ev_null 'exit comes here
#EndIf