when using classicladder with modbus the GUI must run but
it would be nice to have it be shown/hidden on demand.
If the pin is true the section window and manager window are hidden.
if false they are shown.
The operation on "add_point" has to be a short-circuiting operation or
it dereferences op and oop when they are not valid pointers.
Apparently under optimization some versions of gcc will transform
add_point |= ...
into a short-circuiting operation, presumably after proving that the RHS
has no side effects. This, and possibly differing memory layout between
32-bit and 64-bit systems, meant that I hadn't see this bug before Sam
ran into it.
(there's still a modest standards violation here: if npts is 0, then oop
is a pointer to two elements before the start of a block of memory; it
is only permitted to form a pointer up to one element before the start
of a block of memory. However, in practice no real computer is going to
misbehave just due to this pointer arithmetic)
The following statements now cause an error message during parsing:
1. a 'return' or 'endsub' not within a sub defintion
2. a label on 'repeat' which is defined elsewhere
3. a label on 'while' which is defińed elsewhere and not referring to a 'do'
4. a label on 'if' defined elsewhere
5. a undefined label on 'else' or 'elseif'
6. a label on 'else', 'elseif' or 'endif' not pointing to a matching 'if'
7. a label on 'break' or 'continue' which does not point to a matching 'while' or 'do'
8. a label on 'endrepeat' or 'endwhile' no referring to a corresponding 'while' or 'repeat'
These situations now abort the interpreter. To make these errors non-fatal
warnings on stderr, set bit 0x20 in the [RS274NGC]FEATURE= mask. I rather
recommend you fix your programs though.
see src/emc/rs274ngc/interp_internal.hh
This is mostly patch 7d918c.
It is now ok to reintroduce it because due to commit 1c5aea the interpreter is now the only
source of linenumber information, and serial execution of the same command always
results in the same linenumber. This was not the case with the pseudoMdiLineNumber
workaround, which prevented proper matching of labels during MDI.
the following sequence led to a crash:
gcodemodule instantiates an interpreter for preview
the debug mask is nonzero, setting _setup.debugmask in Interp.init()
another interpreter is instantiated through gcodemodule which does not
clear debugmask but sets log_file to zero
init_named_parameters tries to log to NULL log_file
the halui.program.is-running pin now makes sense during MDI execution.
The current MDI command is reflected in emcstatus->task.command
during MDI execution.
The interpreter is now the only source of line number information.
motion.program-line makes sense during MDI execution - the MDI command
itself is started with line number 0, and subroutine line numbers
are correctly reflected during MDI.
7i77 misspelled analog enable pin
7i76 many sserial commands had extra periods in the name
7i76 error when using digital potentiometer for spindle control when making the INI FILE
The usrmot "user interface", which in principle sends messages directly
to the realtime motion controller (bypassing task), has been broken for
some time (crashing the motion controller whenever it attempts to issue
a motion) and nobody has reported it. I suspect strongly that no one
is using this code.