Ok, so looking at your request more closely, you can pretty much do what you need to without having to modify the subs at all. However, you'll need to manage the next rune yourself. Here's an example (untested):
set %first 1
set %last 16
set %runebook XXYYZ1
set %index %first
set %fail #TRUE
set %give_up #FALSE
repeat
gosub TM_TravelFromRunebook RE %index %index %runebook
set %fail #RESULT
if %fail = #TRUE
{
set %index %index + 1
if %index > %last
set %give_up #TRUE
; -- go do something else here in the mean time time, wait, whatever.
}
until ! %fail || %give_up
;Either worked (%fail = #false) or gave up