Yeah, the way it works, is that the real main func is in dos.h, and it is definitely needed. But it would be possible to move its code (it just does a call to app_run) to your own if needed. However, in the user code (as in the samples) there is *another* main, but this one is actually called dosmain - there’s just a define in dos.h that defines main to be an alias for dosmain. Defining NO_MAIN_DEF disables this, and your user main has to be named dosmain instead of main