triffid/Teacup_Firmware — comment on commit 9dbfa7217e0de8b140846ab480d6b4a7fc9b6791
File: gcode_process.c line 72
By phord:

Hmmm. Maybe I don't understand all of this yet. But I think you want this instead:

if (next_target.target.all_relative)
next_target.target.X += startpoint.X ;
if (next_target.target.X < X_MIN * 1000.)
next_target.target.X = X_MIN * 1000.;

Because if you run into the software endstop, you just want go to MIN, right? Not MIN + startpoint. In other words, I think the result of running into an endstop here should be the same regardless of whether you are in all_relative or not. However, the initial calculation should be different.

And I'm not sure I understand what happens after SpecialMoveE, so I may still have this wrong.