Due to high demand and worldwide supply chain issues, we are experiencing longer than normal delivery time frames for many Tormach machines and accessories.


Subroutines can be looped using the do/while or while/endwhile keyword constructs.


The do/while loop executes a block of code once and continues to execute the code block until the while argument evaluates to true.

Do/while loop example:

#1 = 0 (assign parameter #1 the value of 0)

o100 do

(debug, parameter 1 = #1)

o110 if [#1 EQ 2]

#1 = 3 (assign the value of 3 to parameter #1)

(msg, #1 has been assigned the value of 3)

o100 continue (skip to start of loop)

o110 endif

(some code here)

#1 = [#1 + 1] (increment the test counter)

o100 while [#1 LT 3]



The while/endwhile repeats a set of statements an indefinite number of times, as long as the while argument evaluates to true.

While/endwhile example:

(draw a sawtooth shape)

G00 X1 Y0 (move to start position)

#1 = 1 (assign parameter #1 the value of 0)

F25 (set a feed rate)

o101 while [#1 LT 10]

G01 X0

G01 Y[#1/10] X1

#1 = [#1+1] (increment the test counter)

o101 endwhile

M02 (end program)

The following statements cause an error message and abort the interpreter:

  • A return or endsub not within a sub definition
  • A label on repeat which is defined elsewhere
  • A label on while which is defined elsewhere and not referring to a do
  • A label on if defined elsewhere
  • A undefined label on else or elseif
  • A label on else, elseif or endif not pointing to a matching if
  • A label on break or continue which does not point to a matching while or do
  • A label on endrepeat or endwhile no referring to a corresponding while or repeat