1. The CORExx printers were checking more endstop axis than needed.
2. Removed all the CORE_xx_NOT logic. The motor_direction(xx) routine
always returns the correct data so it is not needed. It was actually
cause the wrong direction to be checked in some cases.
3. Made the logic/defines for X, Y & Z axis all the same. The old logic
checked inappropriate configurations for Y and didn't check all the
correct configurations on Z.
4. Added a check for zero steps before the X, Y & Z axis. Previously
would check the they axis even if there were no movement.
All the memory accesses need to be unsigned char in order to avoid
false errors being detected. Two new features are available for
developers to call into the M100 functionality to look for data
corruption.
I use the movement options via LCD quite often. Especially to get the nozzle out of the way. I see no reason, why the 10mm option is disabled for the Z-Axis, this is why i always delete this line when i compile a new version.
If this is unwanted, please just close this PR
M100 had numerious changes and quit working. Part of the problem is
the overloading of the SERIAL_PROTOCOL functions. Also, some of the
address arithmatic was changed to use char *ptr and passing ptr into the
SERIAL_PROTOCOL functions caused them to try to print a string instead
of a number. M100 is working again. Let's keep it that way!
M100 has been expanded to now have a function int
free_memory_is_corrupted() that can be called from other code to see if
the free space is still contiguous. It may make sense to add a flag to
control its verbose nature but right now, the extra chit chat is very
helpful to know int free_memory_is_corrupted() is doing the right thing
and what it found at various points when it was called. A 'Show &
Tell' is coming up with int free_memory_is_corrupted().