I can see no problem with the M106 command but it may be that you are overloading your cpu with your code.
The following code:
G1 X-6.65 Y2.73 Z100.00 F1000
G1 X-6.66 Y2.23 Z100.00 F1000
G1 X-6.66 Y1.73 Z100.00 F1000
G1 X-6.66 Y1.55 Z100.00 F1000
can be changed to:
G1 X-6.65 Y2.73 -> eliminate Z and F as they have not changed
G1 X-6.66 Y2.23
G1 Y1.73 -> eliminate X as it did not change -> this line could also be deleted as next X is also the same so is a vertical line
G1 Y1.55
Each value that is on line needs to be read ,changed to value from text, and compared to existing value.
This becomes more impotant with several small moves in a row and faster speeds
George.
The following code:
G1 X-6.65 Y2.73 Z100.00 F1000
G1 X-6.66 Y2.23 Z100.00 F1000
G1 X-6.66 Y1.73 Z100.00 F1000
G1 X-6.66 Y1.55 Z100.00 F1000
can be changed to:
G1 X-6.65 Y2.73 -> eliminate Z and F as they have not changed
G1 X-6.66 Y2.23
G1 Y1.73 -> eliminate X as it did not change -> this line could also be deleted as next X is also the same so is a vertical line
G1 Y1.55
Each value that is on line needs to be read ,changed to value from text, and compared to existing value.
This becomes more impotant with several small moves in a row and faster speeds
George.