This is very illogical. If I cannot write * donot to mean "do not", it annoys me greatly. Is there a good reason we do not say * donot, or is it simply by chance that we cannot?
We don't need to write ‘do not’ – usually pronounced /du/ /nɑt/– as two separate words, it's already been shortened and contracted in everyday speech. I present: don't (/dōnt/), the shorter and easier way to say (and spell?) “do not”.
P.S. “donot” looks too close to the American spelling of doughnut, “donut” pronunced /ˈdoʊˌnət/, for my comfort but that's merely coincidental.
Actually, I suspect that the single word donot never caught on, as far as I am aware, due to the pronunciation of the syllables don- and do-. In words such as donkey, donned, and donnish, and donate, donation, donnée, and donut, the letters do- never make the sound /du/ or /do͞o/ whereas the pronunciation of can in cannot is unaffected.
Wikipedia provides a handy list of negative contracted auxiliaries
The standard contractions for negation of auxiliaries are as follows:
From forms of be: isn't, aren't, wasn't, weren't
From forms of have: haven't, hasn't, hadn't
From forms of do: don't, doesn't, didn't
From modal verbs: can't (the full form is the single word cannot),
couldn't, mayn't (rare), mightn't, mustn't, shan't (for shall not), shouldn't, won't (for will not), wouldn't, daren't, needn't, oughtn't, usedn't (rare).
As can be seen in the list above, cannot is the only exception, so the "real" question is not why do not is not logically spelled as “donot”, but why the orthography of cannot is unique.