Daz,
When you hit Cycle Start, the FIRST thing that is done by the core (LUA plugin) is to look at all of the .mcs files and compare them to the date/time of the byte code .mcc files. If a .mcs file is newer than its' accompanying .mcc file, the .mcs file is assumed to be modified and the LUA plugin tries to recompile it. Once all of the .mcs files are compiled into .mcc files, all of the .mcc files are rolled up into one big chunk called mcLua.mcc. If any of this fails, it will result in a MERROR_NOT_COMPILED error return. So SOMETHING is causing it. Mach will continue to run on the old mcLua.mcc file if it cannot compile a new one.
You are correct that the screen LUA scripts are just snippets that get rolled up into a larger script. That script is what you can see in the Diag menu. When the GUI starts, it takes all of the screen element scripts and rolls them up into one big script. So you really can't edit that one because it is generated. Any changes you made to it would get overwritten once you restarted the GUI or made changes to the screen in the editor.
I'll try and make a way to find the errors more easily. Like blanking out the failed .mcc file to zero bytes if it failed to compile. That way, it would be easy to see which .mcs file has the error in it.
Steve