M6 is indeed the standard tool change M code. It is machine dependent and therefore the machine tool builder (you) have to write one.

M56 is not something that is standard to my knowledge and I do not know why it would be needed.
The T code, selected the tool. depending on the tool change settings and the type of tool changer on the machine, it can be used to preload the next tool or select the next tool. For lathes, the common case is the T on the M6 line is the "tool to use".
M6 T0101
This could be written T0101 M6, but by convention, the syntax of M6 T0101 is used. Basically, T0101 sets the tool to use (selects the next tool) and M6 makes it happen. No action happens with T0101 by itself.
Now, if preloading tools is needed. You can write a t.mcs macro and put it in the macro folder. This will make T0101 actually perform an action, depending on what you put in the script.
Here is a sample t.msc file:
function t(tool)
inst = mc.mcGetInstance();
local msg = "Tool Changer Retrieving tool #" .. tostring(tool)
mc.mcCntlSetLastError(inst, msg);
-- make tool changer preload the tool
end
if (mc.mcInEditor() == 1) then
t(1);
end
But tool preloading is only for tool changers that support it. Like I said, most lathes don't handle tool changes this way.
T0101 (preload the tool 1)
M6 T0202 (makes tool 1 active and preloads tool 2)
; gcode
; gcode
; gcode
; gcode
; gcode
M6 T0101 (makes tool 2 active and preloads tool 1)
; gcode
; gcode
; gcode
; gcode
; gcode
M6 (makes tool 1 active)
Steve