Sure, but first let me apologize, I didn't intend to come off as trying to take a dump on your efforts with this BIOS. I'm just trying to help.
The reason for keeping the direction flag cleared as much as possible is really simple if you think about it.
As I'm sure you know, almost all code involving string instructions need the direction flag cleared, or put another way, very very little code need the direction flag set. So, for efficiency it makes sense to keep the direction flag cleared all the time so that people actually
can assume it is cleared when doing their string operations. That is why
all calling conventions requires this and no HLL compiler will emit code that leaves DF set.
(NB, I fail to find any sources to support that last statement, but if anyone wants to, feel free to prove me wrong.)
The sinister thing about this is that even though the bug is yours, your code may work just fine but it will make other peoples programs look bad because they will crash even though the authors of the programs didn't do anything wrong. So to prevent this, everyone sprinkles CLD:s throughout their ASM programs, and most of the time it is completely unnecessary.
In an ideal world we would have an almost 1:1 ratio between the number of STD:s and CLD:s. I say almost because you still need CLD:s in interrupt handlers that might interrupt an overlapping memcopy for instance.
If possible list a programming manual, book, or some another authoritative source that recommends keeping direction flag cleared as much as possible.
I take it you don't see me as an authority on the subject? :D Well, how about
Agner Fog then? (See page 11)
I have a habit of setting or clearing direction flag before any string operation, and not assuming that it is clear.
I have no objections to this though I wish you wouldn't have to (and there's a good chance that it's not necessary most of the time).