The tool change is not the issue. It is this line:
G28 G91 Z0
That is telling the machine to go to your Z axis G28 position (which I’m guessing you haven’t set).
The Error 38 is because of the tool number, 603, as the default max value for grbl is 255.
Here’s a link to my post processor.
https://a360.co/2PPwJrT
Gives the option to use G28 (default no), and it gives the option to Use Tools (default yes), along with some other User-Defined options.
In CNCjs, the M6 will pause the job and wait for you to resume…that’s all. It’s up to you if you want to run a macro at that point or not.