Seems fine to me. Only thing is that you might consider making the rules for function calls more obvious - I briefly wondered if "add" was a legal function, so you might want to use "foo" or "foo(a, b) or add(a, b)" to make it more obvious it's anything you define.
Also, this is slightly different than the normal rules for (non-Turing Machine) busy beaver? But I suspect they're roughly equivalent, though. At least different than the one I did - when we covered Busy Beaver in college, it was with a strict line count and using GOTOs / simple IF THEN (LINE NUMBER) logic. An if then branch is a form of function invocation, I suppose, hence why it's probably equivalent to most BBs. Fun stuff, too, as our CS professor invited one of the math profs in to give the lecture that day.