VTM2 is the "Virtual Turing Machine 2" by Paul Ming, http://infohost.nmt.edu/~prcm/turing/vtm-2.02.tar.gz Here's how I set it up to run here, running under perl 5.8.3 First, vtm* wasn't behaving as I expected ... so I made some changes; see vtm_WITH_JIMS_CHANGES $ wget http://infohost.nmt.edu/~prcm/turing/vtm-2.02.tar.gz $ tar zxf vtm-2.02.tar.gz $ cd vtm-2.02 $ pod2html VTM.pm > ../VTM_pod.html; rm *.tmp; mv $ ./vtm -h > ../vtm_help.txt $ make vtml (c wrapper with path to vtm as /usr/local/bin/vtm) # install VTM.pm and vtm* $ su $ cp ../vtm_WITH_JIMS_CHANGES /usr/local/bin/vtm $ cp vtml /usr/local/bin $ cp VTM.pm /usr/lib/perl5/site_perl/5.8.3 $ exit $ cd .. $ mkdir machines $ cp -r vtm-2.02/examples/ machines/ $ cd machines/examples/ $ perl -pi -e "s{/home/prcm/turing/vtml}{/usr/local/bin/vtml}" *.vtm Here's the examples, copied and slightly altered in machines/examples : $ ./add.vtm This script adds two numbers. The format of the tape is: _1...1_1...1_ where 1...1 is a string of 1s. The first string of 1s represents the first number in unary, i.e., the number n is represented by a string of (n + 1) 1s (e.g. 2 is represented by `111'). The second string of 1s represents the second number in unary. The `_' in the middle separates the numbers. So an initial tape of `_111_111_' will add 2 and 2, and hopefully get `_11111___' (`11111' is 4 in unary). Specify initial tape: _1_11_ 0: _<1>_ 1 1 _ : pass_first 0: _<1>_ 1 1 _ : pass_first 0: _ 1<_>1 1 _ : pass_first 0: _ 1<1>1 1 _ : pass_second 0: _ 1 1<1>1 _ : pass_second 0: _ 1 1<1>1 _ : pass_second 0: _ 1 1 1<1>_ : pass_second 0: _ 1 1 1<1>_ : pass_second 0: _ 1 1 1 1<_>: pass_second 0: _ 1 1 1 1<_>: delete1 0: _ 1 1 1<1>_ : delete1 0: _ 1 1 1<_>_ : delete2 0: _ 1 1<1>_ _ : delete2 0: _ 1 1<_>_ _ : HALT 0: _ 1 1 _<_>_ : HALT $ ./infinite.vtm This is an example of a Turing machine that has an infinite loop. It first goes to the right, then left, then right, then left... 0: <1>- - : right 0: <1>- - : right 0: 1<->- : right 0: 1<->- : left 0: 1 -<->: left 0: 1 -<->: right 0: 1<->- : right Infinite loop detected. Exiting. $