Like turing machine, but your tape is finite. To make a program valid it should have a limit result when the length of tape tends to infinity.
Whether the tape has two ends or is cyclic doesn't matter, for placing a special dot on cyclic tape is like a two-end tape, and running back at the end on a two-end tape makrs cyclic.
Also it can solve its own halting problem by testing the running time. The conflict program is invalid, it has no result limit.