Frankly, I won't feel you've got a proper understanding of coroutines until I get you to admit that the parallel API is a better option than attempting to handle it yourself. But I've decided that's a pipe dream, so…
This chunk of code, as HPWebcamAble points out,
is broken:
if turtle.dig() then --dig it
digTimerID = os.startTimer(0.35) --start a timer until the dig action completes
coroutine.yield("digging") --yield the coroutine until the dig timer expires
else
--something is very wrong-----------------------------------------------------------------------------------------
end
turtle.dig() starts the action, yields, waits to be resumed with an event detailing the result, then finally returns that result.
Until ALL of that happens, execution of this code segment won't make it past the first line. By the time you're starting your timer on the
second line, turtle.dig() has
finished, either successfully or otherwise, and so there's no point in timing it.
Your coroutine has a local "coroutineAction" variable, which will only be set the first time you resume it (because you never set it again anywhere else). It'll therefore entirely ignore the one you made local to the rest of the script.
I get the impression you're somehow thinking os.startTimer() yields? It doesn't; it simply starts a timer and returns the ID. After you set actionTimerID, actionCoroutine does not yield again at all (getting stuck looping from lines 34-137, doing nothing as coroutineAction has been set to false), and so your main loop never gets to check it. I'd assume the script either crashes or that the turtle completely shuts down, as ComputerCraft's yield protection system will step in shortly after that.
I know where you're going with all this, and, if implemented correctly, your ideas can indeed be made to work. But I still have to point out that you're doing things the long and hard way. I've finally given in and started writing a guide explaining coroutines (and how you're expected to use them within the ComputerCraft framework) - it may be worthwhile waiting for that. Quite frankly I'd like to re-write your whole script to make it operate the way you want it to, then re-write it again to get the same results in a more efficient manner. If only time were an unlimited resource…
But, I suppose the quick'n'dirty fix would be to change line 136 to "coroutineAction = os.pullEvent()". That should be sufficient to at least get things moving.